【问题标题】:How to ignore case sensitivity in Oracle database query如何在 Oracle 数据库查询中忽略区分大小写
【发布时间】:2019-02-12 20:13:36
【问题描述】:

我有大小写字符的字符串,如何忽略大小写。

我尝试过使用 COLLET、UPPERCASE、LOWERCASE 它不工作。 有没有其他方法可以忽略?

【问题讨论】:

  • 你能在声明中展示你尝试过的内容吗?
  • 关键字是UPPER
  • 类似WHERE UPPER(myColumn) = UPPER(myValue)。当然,使用LOWER 也可以。
  • @RobertKock 为什么不将您的评论作为答案。这样问题就会得到正式的回答
  • @DesignerAnalyst:检查

标签: sql oracle case-sensitive


【解决方案1】:

试试这个:

WHERE UPPER(myColumn) = UPPER(myValue)

或者,当然:

WHERE LOWER(myColumn) = LOWER(myValue)

【讨论】:

    【解决方案2】:

    上下方法都可以,但如果您正在寻找更复杂的方法,请尝试此方法。

    create table table_test (a varchar2(100));
    
    insert into table_test values( 'ABC');
    insert into table_test values( 'abc');
    insert into table_test values( 'AbC');
    
    alter session set NLS_COMP=LINGUISTIC; 
    -- how to compare string 
    alter session set NLS_SORT=BINARY_AI;  --//or alter session set NLS_SORT=BINARY_CI;  
    -- how to sort string  
    -- the magic starts here 
        select * from table_test where a = 'ABC'
    

    以及对不同排序和比较方法的完整描述: https://docs.oracle.com/cd/B28359_01/server.111/b28298/ch5lingsort.htm#CIHJBFAD

    【讨论】:

      【解决方案3】:

      就像 Robert Kock 提到的那样,在两侧使用上或下。 如果在使用上/下后连接不匹配,则可能是由于数据中的尾随空格。 在这种情况下,您还可以使用 trim 删除不需要的尾随空格

      upper(trim(column1)) = upper(trim(column2))
      

      lower(trim(column1)) = lower(trim(column2))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-12-09
        • 2018-10-04
        • 2010-11-05
        • 1970-01-01
        • 2020-04-25
        • 1970-01-01
        • 2014-09-05
        • 1970-01-01
        相关资源
        最近更新 更多