对不起我的英语不好.
我想检索其TITLE字段满足某些模式(不区分大小写)的行,并且此字段仅包含非英文字母.
我试过这个:
SEARCH * FROM TABLE_NAME WHERE UPPER(column_name)LIKE UPPER(‘%pattern%’);
但是,它不起作用,可能是因为表中只包含非英文字母.
更新:
例:
SELECT * FROM PartnersTable WHERE UPPER(TitleColumn) LIKE UPPER('%pattern%') ;
哪里:
TitleColumn可能包含“Газпром”,“Лукойл”,“Йотафон”,“Мечтаювелира”,
模式可能包含“газ”,“Ювелир”等.
我尝试使用添加到列定义的COLLATE NOCASE.如果你能够做到这一点,那么这就是你要走的路.
我测试了什么:
CREATE TABLE PartnersTable (`id`,`TitleColumn` COLLATE NOCASE ) ;
添加了与您的问题相同的日期:
INSERT INTO PartnersTable (`id`,`TitleColumn`) VALUES (1,'Газпром'),(2,'Лукойл'),(3,'Йотафон'),(4,'Мечта ювелира') ;
然后尝试选择它:
select * from PartnersTable where TitleColumn like '%Ювелир%'
有用.
在这里演示:
http://sqlfiddle.com/#!7/ae8f8/2
编辑:
您也可以在没有UPPER的情况下使用它.默认情况下,LIKE不区分大小写.
根据文件:
Any other character matches itself or it’s lower/upper case equivalent (i.e. case-insensitive matching). (A bug: sqlite only understands upper/lower case for ASCII characters. The LIKE operator is case sensitive for unicode characters that are beyond the ASCII range. For example,the expression ‘a’ LIKE ‘A’ is TRUE but ‘æ’ LIKE ‘Æ’ is FALSE.).”