用于非字母数字的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 .-].*$' 

这将匹配具有一个或多个字符,这是字母,数字,空间,圆点或任何说明短跑。