我正在运行一个SQL查询,以查找确切的单词或短语(用户在运行时决定)。因此,请求可能是寻找短语“ plays catch”
我创建的SQL查询与此类似:
SELECT *
FROM NOTES
WHERE DETAIL LIKE "plays catch %"
OR DETAIL LIKE "% plays catch %";
因为用户要查找确切的词组,所以我在“ catch”之后和“%”之前加上空格,因为我想避免使用类似但又不同的词,例如“ Catch-up”。
因此问题出在处理标点符号,例如句点或逗号。
很遗憾,我的查询现在将排除带有
详细信息的注释John plays catch.
但将包含
John plays catch with his dog.
有人知道在SQL查询中忽略基本标点的简单方法吗?
顺便说一句,这是我在您论坛上的第一篇帖子,如果我误导了这篇帖子,很高兴接受指导。
答案 0 :(得分:2)
如果您的数据库支持正则表达式,则可以用这种方式进行处理。例如:
SELECT *
FROM NOTES
WHERE ' ' || DETAIL REGEXP ' plays catch[ ,.!?]' ;
({||
是字符串连接的标准运算符,尽管某些数据库不支持它。)
或者如果合适的话,您可以使用分隔符('\w'
)。
如果您的数据库不存在,则可以使用REPLACE()
:
SELECT *
FROM NOTES
WHERE REPLACE(REPLACE(' ' || DETAIL, ',', ' '), '.', ' ') LIKE '% plays catch %' ;
答案 1 :(得分:0)
diagram