[英]Exclude punctuation from SQL LIKE query
我正在运行一个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查询中忽略基本标点的简单方法吗?
顺便说一句,这是我在您论坛上的第一篇帖子,如果我误导了该帖子,很高兴接受指导。
如果您的数据库支持正则表达式,则可以采用这种方式进行处理。 例如:
SELECT *
FROM NOTES
WHERE ' ' || DETAIL REGEXP ' plays catch[ ,.!?]' ;
( ||
是字符串连接的标准运算符,尽管某些数据库不支持它。)
或者,如果合适,可以使用定界符( '\\w'
)一词。
如果数据库不存在,则可以使用REPLACE()
:
SELECT *
FROM NOTES
WHERE REPLACE(REPLACE(' ' || DETAIL, ',', ' '), '.', ' ') LIKE '% plays catch %' ;
SELECT *
FROM testing
WHERE alphanum(test) LIKE CONCAT('%', alphanum('plays catch'), '%')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.