0

SQLITE の複数の列で単一の文字列を検索する必要がありますが、結果を取得できません。次のクエリを使用して検索しています。

Select * 
From MyTable 
Where (col1 || '--' || col2) like '%abc xyz 123%'

col1「abc」col2「xyz 123」があるとします。

どんな助けでも。

4

3 に答える 3

1

col1 に「abc」、col2 に「xyz 123」があるとします。

col1 || '--' || col2は等しい'abc--xyz 123'ので、一致しません'%abc xyz 123%'!

使用する必要があります

 SELECT * FROM MyTable WHERE col1 || ' ' || col2 LIKE '%abc xyz 123%'

また

 SELECT * FROM MyTable WHERE col1 || '--' || col2 LIKE '%abc--xyz 123%'

注:||よりも優先順位が高いため、括弧は必要ありませんLIKE

于 2013-11-08T09:27:11.817 に答える
0

ステートメントのオペランドはLIKE基準に一致する必要があります。これらの 2 つの列のフィールドの連結から「単一文字列」の完全一致を探していて、(col1) フィールドに「abc」があり、(col2) フィールドに「xyz 123」がある場合は、左側あなたのオペランドはLIKE連結 (col1 || col2) であり、右側のオペランドは連結 ('%abc%' || '%xyz 123%') であり、ステートメントは次のようになります。

SELECT * FROM MyTable WHERE (col1 || col2) LIKE '%abc%'||'%xyz 123%';

また

SELECT * FROM MyTable WHERE (col1 || '--' || col2) LIKE '%abc%'||'--'||'%xyz 123%';

例:

C:\SQLite3>sqlite3 test
    SQLite version 3.8.1 2013-10-17 12:57:35
    Enter ".help" for instructions
    Enter SQL statements terminated with a ";"
    sqlite> CREATE table MyTable (col1 text, col2 text);
    sqlite> INSERT into MyTable (col1, col2) values ('abc', 'xyz 123');
    sqlite> SELECT * FROM MyTable WHERE (col1 || col2) LIKE '%abc xyz 123%';
    sqlite> SELECT * FROM MyTable WHERE (col1 || col2) LIKE '%abc%' || 'xyz 123%';
    abc|xyz 123
    sqlite> SELECT * FROM MyTable WHERE (col1 ||'--'|| col2) LIKE '%abc xyz 123%';
    sqlite> SELECT * FROM MyTable WHERE (col1 ||'--'|| col2) LIKE '%abc%'||'--'||'%xyz 123%';
    abc|xyz 123
    sqlite>
于 2013-11-08T09:39:57.230 に答える