("select * from table where column like ?", ['%' + var1 + '%'])
显示的结果如“cabcd a”,“xyabcd xyz”,“xyz abc”,“x abc”,“abc y”。但我只希望输出像“xyz abc”,“x abc”,“abc y”。并且abc存储在var1
中答案 0 :(得分:1)
我建议:
where concat(' ', column, ' ') like "% abc %"
这将在列中的任何位置找到单词,假设唯一有效的分隔符是空格。
注意:在SQLite中,您可以使用||
代替concat()
。此外,如果您想要性能,请查看全文索引。
编辑:
如果值存储在变量中,则代码如下所示:
"select * from table where concat(' ', column, ' ') like ?", ['% ' + var1 + ' %'])
答案 1 :(得分:0)
SELECT *
FROM #temp1
WHERE name LIKE '% abc%'
OR name LIKE 'abc_%'
答案 2 :(得分:0)
如何用两边的空格进行搜索:
channel.read_to_end()
答案 3 :(得分:0)
试试这个:
SELECT * FROM table_name
WHERE column LIKE "% abc%" OR column LIKE "%abc %" OR column="abc";
答案 4 :(得分:0)
由于您的String保存在变量中,请尝试以下操作:
SELECT * FROM table WHERE (column LIKE CONCAT('% ', var1, '%') OR column LIKE CONCAT(var1,' %'));
如果添加更多约束(AND运算符优先于OR),额外的括号应避免混淆。
答案 5 :(得分:0)
您可以使用REGEXP
以及[[:<:]]
和[[:>:]]
字边界标记:
SELECT * FROM table WHERE column REGEXP "[[:<:]]abc[[:>:]]";
答案 6 :(得分:0)
你必须声明变量
DECLARE @Pattern_Val AS CHAR(7)
SET @Pattern_Val = '% abc %'
SELECT * FROM table WHERE column LIKE @Pattern_Val
注意:注意CHAR的长度 - 定义!!