【问题标题】:Force case insensitive with OCI in PHP (oracle database)在 PHP(oracle 数据库)中使用 OCI 强制不区分大小写
【发布时间】:2013-02-26 18:04:54
【问题描述】:

嗯,标题解释的很好……

我正在使用OCI 在 PHP 中探索 Oracle 数据库。

麻烦的是数据库是区分大小写的,所以...当我执行一个类似的句子时

SELECT COUNT(username) count, username FROM transactions WHERE username IS NOT NULL GROUP BY username

返回一个这样的数组

COUNT USERNAME
213   EMG_COTORA
31    EMG_cotora
123   emg_cotora

这是因为数据库区分大小写,所以...如何在不修改数据库的情况下强制不区分大小写? (我没有写权限)

【问题讨论】:

    标签: php oracle


    【解决方案1】:

    我假设在您的实际查询中,您有一个 GROUP BY 子句。您只需按UPPER(username) 分组即可

    SELECT upper(username), count(*) cnt
      FROM transactions
     WHERE username IS NOT NULL
     GROUP BY upper(username)
    

    当然,您也可以使用 SELECTGROUP BY lower(username)initcap(username) 或任何其他将不同用户名值转换为单个值的函数。

    【讨论】:

    • 你的假设是正确的,你的答案是完美的。我已修改问题以使其更明确,谢谢!
    • (注意:在upper(username) 上建立索引会加快查询速度,如果您经常执行它)
    猜你喜欢
    • 2012-11-01
    • 1970-01-01
    • 2011-11-20
    • 1970-01-01
    • 1970-01-01
    • 2015-02-21
    • 1970-01-01
    • 1970-01-01
    • 2014-03-29
    相关资源
    最近更新 更多