2

テーブル内のすべての列の大文字と小文字を区別する検索を実行しようとしているので、このようなことをしました

Select * From mytable Where col1 || '--' || col2 || '--' || etc like '%SomeValue%'

ただし、大文字と小文字の両方で常に同じ結果を返します。私がこれをしたら

Select * From mytable Where col1 like '%SomeValue%' OR col1 like '%SomeValue%' etc

私は望ましい結果を得る。ここでの問題は、検索する列が約 36 あるため、この 2 番目のクエリを使用できず、col1 like '%SomeValue%'最大 36 回書き込む必要がないことです。

誰にも解決策はありますか?

4

1 に答える 1

2

glob1つの解決策は、代わりに使用することです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> 
于 2012-10-05T01:28:14.433 に答える