Leo*_*nov 7 sql sqlite sql-like
对不起我的英语不好.
我想检索其TITLE字段满足某些模式的行(不区分大小写),并且此字段仅包含非英文字母.
我试过这个:
SEARCH * FROM TABLE_NAME WHERE UPPER(column_name) LIKE UPPER('%pattern%');
但是,它不起作用,可能是因为表中只包含非英文字母.
更新:
例:
SELECT * FROM PartnersTable WHERE UPPER(TitleColumn) LIKE UPPER('%pattern%') ;
Run Code Online (Sandbox Code Playgroud)
哪里:
TitleColumn可能包含"Газпром","Лукойл","Йотафон","Мечтаювелира",
pattern可能包含"газ","Ювелир"等.
我尝试使用 COLLATE NOCASE添加到列定义中。如果你能做到,那么这就是你要走的路。
我测试的:
\nCREATE TABLE PartnersTable \n (`id` , `TitleColumn` COLLATE NOCASE )\n;\nRun Code Online (Sandbox Code Playgroud)\n添加了与您的问题相同的数据:
\nINSERT INTO PartnersTable\n (`id`, `TitleColumn`)\nVALUES\n (1, \'\xd0\x93\xd0\xb0\xd0\xb7\xd0\xbf\xd1\x80\xd0\xbe\xd0\xbc\'), (2, \'\xd0\x9b\xd1\x83\xd0\xba\xd0\xbe\xd0\xb9\xd0\xbb\'), (3, \'\xd0\x99\xd0\xbe\xd1\x82\xd0\xb0\xd1\x84\xd0\xbe\xd0\xbd\'), (4, \'\xd0\x9c\xd0\xb5\xd1\x87\xd1\x82\xd0\xb0 \xd1\x8e\xd0\xb2\xd0\xb5\xd0\xbb\xd0\xb8\xd1\x80\xd0\xb0\')\n;\nRun Code Online (Sandbox Code Playgroud)\n然后尝试选择它:
\nselect *\nfrom PartnersTable\nwhere TitleColumn like \'%\xd0\xae\xd0\xb2\xd0\xb5\xd0\xbb\xd0\xb8\xd1\x80%\'\nRun Code Online (Sandbox Code Playgroud)\n有用。
\n此处演示:\n http://sqlfiddle.com/#!7/ae8f8/2
\n编辑:\n您也可以在不使用UPPER. 默认情况下LIKE不区分大小写。\n根据文档:
\n\n任何其他字符与其自身或其小写/大写等效字符匹配(即不区分大小写的匹配)。(一个错误:SQLite 只理解 ASCII 字符的大写/小写。对于超出 ASCII 范围的 unicode 字符,LIKE 运算符区分大小写。例如,表达式 \'a\' LIKE \'A\' 为 TRUE,但\'\xc3\xa6\' 像 \'\xc3\x86\' 是假的。)。
\n
此处演示:\n http://sqlfiddle.com/#!7/c9b5d/1
\n