3 回答

TA貢獻(xiàn)1817條經(jīng)驗(yàn) 獲得超14個(gè)贊
通常,SQL中的字符串比較由列或表達(dá)式COLLATE規(guī)則控制。在Android中,只預(yù)定義了三個(gè)校對(duì)序列:BINARY(默認(rèn)),LOCALIZED和UNICODE。它們都不適合您的用例,遺憾的是,Java API中沒有公開用于安裝新歸類函數(shù)的C API。
要解決這個(gè)問題:
例如,向表中添加另一列 MOVIE_NAME_ASCII
將值存儲(chǔ)到此列中并刪除重音符號(hào)。您可以通過將字符串規(guī)范化為Unicode Normal Form D(NFD)并刪除非ASCII代碼點(diǎn)來刪除重音,因?yàn)镹FD表示重音字符大致為純ASCII +組合重音符號(hào):
String asciiName = Normalizer.normalize(unicodeName, Normalizer.Form.NFD)
.replaceAll("[^\\p{ASCII}]", "");
您的文本是否在此ASCII規(guī)范化列上搜索,但顯示原始unicode列中的數(shù)據(jù)。

TA貢獻(xiàn)1776條經(jīng)驗(yàn) 獲得超12個(gè)贊
您需要查看這些,而不是重音字符,而是完全不同的字符。您也可以尋找a,b或c。話雖這么說,我會(huì)嘗試使用正則表達(dá)式。它看起來像:
SELECT * from TB_MOVIE WHERE MOVIE_NAME REGEXP '.*[aAàà].*' ORDER BY MOVIE_NAME;
- 3 回答
- 0 關(guān)注
- 467 瀏覽
添加回答
舉報(bào)