【问题标题】:Is there an easier way to rewrite SQL Server queries for PostgreSQL?有没有更简单的方法来为 PostgreSQL 重写 SQL Server 查询?
【发布时间】:2016-05-24 12:21:02
【问题描述】:

特别是,我正在寻找一种方法来更轻松地重写我的类似查询,而不必每次都使用“lower”函数。

在 SQL Server 中,我的查询如下所示:

WHERE (FIELD LIKE '%Foot%Locker%' or FIELD LIKE '%Foot%Action%' or FIELD LIKE '%Champs%')

在 PostgreSQL 中,我必须这样重写每个查询(如果我希望我的查询同时捕获 Foot Locker 和 foot locker 以及任何其他大写驱动的排列):

WHERE (lower(FIELD) LIKE lower('%foot%locker%') or lower(FIELD) LIKE lower('%foot%action%') or lower(FIELD) LIKE lower('%champs%')

当然,这很烦人。我必须重写 100 个查询。有没有简单的解决方法?

【问题讨论】:

    标签: sql sql-server postgresql


    【解决方案1】:

    Postgres 正是你要找的东西ilike:

    可以使用关键字ILIKE 代替LIKE 进行匹配 根据活动区域设置不区分大小写。这不在 SQL 标准,但它是 PostgreSQL 扩展。

    (记录在案的here。)

    所以,你可以这样做:

    WHERE (field ILIKE '%foot%locker%' or FIELD ILIKE '%foot%action%' or FIELD) ILIKE '%champs%'
    

    或者,如果您愿意:

    WHERE lower(field) ~ '(foot.*locker)|(foot.*action)|champ'
    

    【讨论】:

    • 如果你使用~*而不是~,你实际上不需要lower()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-29
    • 2013-07-07
    • 2017-10-14
    相关资源
    最近更新 更多