我必须在SQLITE中搜索多个coloumn中的单个字符串,但我无法获得结果,我使用以下查询进行搜索:
Select *
From MyTable
Where (col1 || '--' || col2) like '%abc xyz 123%'
假设我在 col2 中'abc', col2 中'xyz 123'。
任何帮助。
答案 0 :(得分: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
。
答案 1 :(得分:0)
LIKE
语句的操作数必须符合条件。如果你正在寻找一个“单字符串”完全匹配来自这两列中字段的串联,而(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>
答案 2 :(得分:0)
正确的答案是我必须稍微修改上面的查询,
Select * From MyTable Where (col1 || ' ' || col2) like '%abc xyz 123%'