我正在尝试对表中的所有列执行区分大小写的搜索,所以我做了类似这样的事情
Select * From mytable Where col1 || '--' || col2 || '--' || etc like '%SomeValue%'
但是对于大写和小写都返回相同的结果。如果我这样做
Select * From mytable Where col1 like '%SomeValue%' OR col1 like '%SomeValue%' etc
我得到了理想的结果。这里的问题是我不能使用第二个查询,因为我有大约36列要搜索,而写col1 like '%SomeValue%'
最多36次是不必要的。
有没有人有任何解决方案?
答案 0 :(得分:1)
一种解决方案是使用glob
代替like
sqlite> select * from sqlite_master where ('foo' || '--' || 'bar') like '%Bar%';
table|t|t|2|CREATE TABLE t (a)
sqlite> select * from sqlite_master where ('foo' || '--' || 'bar') glob '*Bar*';
sqlite> select * from sqlite_master where ('foo' || '--' || 'bar') glob '*bar*';
table|t|t|2|CREATE TABLE t (a)
sqlite>
另一种解决方案是使用pragma case_sensitive_like
sqlite> PRAGMA case_sensitive_like = 1;
sqlite> select * from sqlite_master where ('foo' || '--' || 'bar') like '%Bar%';
sqlite> select * from sqlite_master where ('foo' || '--' || 'bar') like '%bar%';
table|t|t|2|CREATE TABLE t (a)
sqlite>