如何编写一个SQL查询来查找para中的单词?

时间:2016-04-26 12:53:03

标签: mysql sql sqlite

("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

7 个答案:

答案 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的长度 - 定义!!