查找包含非 [a-z] 或 [0-9] 字符的标签
Posted
技术标签:
【中文标题】查找包含非 [a-z] 或 [0-9] 字符的标签【英文标题】:Find tags containing characters that aren't [a-z] or [0-9] 【发布时间】:2017-07-28 18:59:34 【问题描述】:我想为 Stack Exchange 数据资源管理器创建一个查询,该查询返回任何包含特殊字符的标签。 (具体来说,任何不是a-z
、0-9
、-
或+
的字符)
搜索应返回c#、c#-to-f#、.net 和python-2.7 等标签。
我尝试了几种不同的解决方案,但每个解决方案似乎都有自己的问题。
SELECT * FROM tags WHERE tagname NOT REGEXP '^[a-zA-Z0-9]*$'
来源:Oracle SQL - REGEXP_LIKE contains characters other than a-z or A-Z
错误:REGEXP_LIKE
不是可识别的内置函数名称。
SELECT * FROM tags WHERE tagname NOT REGEXP '^[a-zA-Z0-9]*$'
来源:How to get all rows that contain characters others than [a-zA-Z] in mysql
错误:REGEXP
附近的语法不正确
【问题讨论】:
【参考方案1】:与其尝试在 SQL 中使用短语“仅包含非特殊字符”并否定它,不如使用短语“包含特殊字符”更容易:
SELECT * FROM tags WHERE tagname LIKE '%[^-+a-z0-9]%'
您会发现其中包含 很多 个包含.
的标签。您可能还希望将其添加到要忽略的字符中。
SELECT * FROM tags WHERE tagname LIKE '%[^-+a-z0-9.]%'
【讨论】:
以上是关于查找包含非 [a-z] 或 [0-9] 字符的标签的主要内容,如果未能解决你的问题,请参考以下文章