【整理】關於sqlite的特殊字元轉義及萬用字元
阿新 • • 發佈:2019-01-05
【轉】1.sqlite中的轉義符
SELECT * FROM table WHERE number LIKE '%/%%' escape '/'
sqlite3資料庫在搜尋的時候,一些特殊的字元需要進行轉義, 具體的轉義如下:/ -> //
' -> ''
[ -> /[
] -> /]
% -> /%
& -> /&
_ -> /_
( -> /(
) -> /)
public static String sqliteEscape(String keyWord){ keyWord = keyWord.replace("/", "//"); keyWord = keyWord.replace("'", "''"); keyWord = keyWord.replace("[", "/["); keyWord = keyWord.replace("]", "/]"); keyWord = keyWord.replace("%", "/%"); keyWord = keyWord.replace("&","/&"); keyWord = keyWord.replace("_", "/_"); keyWord = keyWord.replace("(", "/("); keyWord = keyWord.replace(")", "/)"); return keyWord; }
2.SQL語句中表示單個字元和任意多個字元的萬用字元
%包含零個或多個字元的任意字串。
WHERE title LIKE '%computer%' 將查詢在書名中任意位置包含單詞 "computer" 的所有書名。
_(下劃線)
任何單個字元。
WHERE au_fname LIKE '_ean' 將查詢以 ean 結尾的所有 4 個字母的名字(Dean、Sean 等)。
[ ]
指定範圍 ([a-f]) 或集合 ([abcdef]) 中的任何單個字元。
WHERE au_lname LIKE '[C-P]arsen' 將查詢以 arsen 結尾並且以介於 C 與 P 之間的任何單個字元開始的作者姓氏,例如 Carsen、Larsen、Karsen 等。
[^]
不屬於指定範圍 ([a-f]) 或集合 ([abcdef]) 的任何單個字元。
WHERE au_lname LIKE 'de[^l]%' 將查詢以 de 開始並且其後的字母不為 l 的所有作者的姓氏。