用于非字母数字的PostgreSQL查询
问题描述:
我一直在搜索*以查询如何查找具有特殊字符的单元格。用于非字母数字的PostgreSQL查询
我看到这个在另一篇文章
SELECT * FROM myTable WHERE myField LIKE '%[^a-zA-Z0-9]%'
,并从中patterend下面
SELECT DESCRIPTION FROM ITEM WHERE DESCRIPTION NOT LIKE '%[a-zA-Z0-9 .-]%'
我的代码,但它不是为我工作有如下的结果显示“ - ”“”和和空格。
“2016 LANCER EX GT-A 2.0G CVT”
“2016 MIRAGE GLX 1.2G MT”
“2016 MIRAGE G4 GLX 1.2G MT(UPG)”
“2016 MIRAGE G4 GLX 1.2G CVT(UPG)”
我试图将其改为
SELECT DESCRIPTION FROM ITEM WHERE DESCRIPTION ~* '%[^a-zA-Z0-9 ]%'
返回0的结果。
任何帮助表示赞赏。我很困惑为什么它适用于其他人而不是我的。 我在Opensuse OS上使用Postgresql和PGadmin。
答
我不相信的Postgres LIKE
支持正则表达式,如下列:
WHERE DESCRIPTION NOT LIKE '%[a-zA-Z0-9 .-]%'
但是你可以改用波浪运营商来访问完整的正则表达式。 口头表达,我想你想这里的逻辑是:
找哪家做任何字符串不有一个或多个非字母出现在字符串中的字符。
使用正则表达式模式以覆盖整个字符串正确的模式:
SELECT DESCRIPTION
FROM ITEM
WHERE DESCRIPTION !~ '^.*[^A-Za-z0-9 .-].*$'
这将匹配具有一个或多个字符,这是不字母,数字,空间,圆点或任何说明短跑。