【问题标题】:PostgreSQL Query for Non Alphanumeric非字母数字的 PostgreSQL 查询
【发布时间】:2017-08-14 02:05:16
【问题描述】:

我一直在 Stackoverflow 上搜索有关如何查找具有特殊字符的单元格的查询。

我在另一个帖子上看到了这个

SELECT * FROM myTable WHERE myField LIKE '%[^a-zA-Z0-9]%'

并从下面的代码中提取我的代码

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 操作系统上使用 Postgresql 和 PGadmin。

【问题讨论】:

    标签: postgresql-9.2 pgadmin opensuse


    【解决方案1】:

    我不相信 Postgres LIKE 支持如下正则表达式:

    WHERE DESCRIPTION NOT LIKE '%[a-zA-Z0-9 .-]%'
    

    但您可以改为使用波浪号运算符来访问完整的正则表达式。 口头表达,我觉得你这里要的逻辑是:

    找出任何在字符串中存在一个或多个字母数字字符的字符串。

    使用覆盖整个字符串的正确模式的正则表达式模式:

    SELECT DESCRIPTION
    FROM ITEM
    WHERE DESCRIPTION !~ '^.*[^A-Za-z0-9 .-].*$'
    

    这将匹配包含一个或多个字符的任何描述,这些字符不是字母、数字、空格、点或破折号。

    【讨论】:

      【解决方案2】:

      Postgres 可以处理正则表达式,但它使用关键字 SIMILAR TONOT SIMILAR TO seen here

      我想你想要的是 SELECT DESCRIPTION FROM ITEM WHERE DESCRIPTION NOT SIMILAR TO '%[a-zA-Z0-9 .-]%'

      【讨论】:

        猜你喜欢
        • 2021-10-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-20
        • 2012-08-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多