忽略查询中的大小写

4kr*_*r4m 0 oracle select ignore case

可能重复:
Oracle DB:如何编写忽略大小写的查询?

我有一个SQL查询它,并且where条件包含英语和阿拉伯字符,因此我不能使用toupper或tolower,因为阿拉伯字符将显示为问号。

DBMS是Oracle

Ben*_*Ben 5

你的意思是lower()upper()好吗?

Oracle支持许多不同的语言,这意味着您需要使用一个nls函数。在这种情况下nls_lower

select nls_lower('my string', 'NLS_SORT = ARABIC') from dual
Run Code Online (Sandbox Code Playgroud)

这可能会导致拉丁字符出现问题-值得检查您的输出,因此您可能需要执行与以下类似的操作来缓解:

select case when instr(lower('my_string'),'?') > 0
                 then nls_lower('my string', 'NLS_SORT = ARABIC')
            else lower('my_string')
  from dual
Run Code Online (Sandbox Code Playgroud)