繁体   English   中英

从SQL LIKE查询中排除标点符号

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM