我有一个SQL查询,where条件包含英文和阿拉伯字符,所以我不能使用toupper或tolower,因为阿拉伯字符将显示为问号。
DBMS是oracle
答案 0 :(得分:5)
您的意思是lower()
和upper()
对吗?
Oracle支持许多different languages,这意味着您需要使用nls
函数。在这种情况下nls_lower
。
select nls_lower('my string', 'NLS_SORT = ARABIC') from dual
这可能会导致拉丁字符出现问题 - 值得检查您的输出,因此您可能需要执行与以下相似的操作来缓解:
select case when instr(lower('my_string'),'?') > 0
then nls_lower('my string', 'NLS_SORT = ARABIC')
else lower('my_string')
from dual