zer*_*ble 52 sql database oracle
正如我在标题中所写,我有SQL查询,在Oracle DB上运行,让我们说:
SELECT * FROM TABLE WHERE TABLE.NAME Like 'IgNoReCaSe'
Run Code Online (Sandbox Code Playgroud)
如果我想,查询将返回"IGNORECASE","ignorecase"或它们的组合,如何做到这一点?
这可能吗?
Hoo*_*voo 117
Select * from table where upper(table.name) like upper('IgNoreCaSe');
Run Code Online (Sandbox Code Playgroud)
或者,将下部替换为上部.
dev*_*vio 36
您可以使用ALTER SESSION语句将比较设置为不区分大小写.见这个FAQ.
alter session set NLS_COMP=ANSI;
alter session set NLS_SORT=BINARY_CI;
Run Code Online (Sandbox Code Playgroud)
对于所有在此原始答案被接受后8年访问的人(10gR2):
在10gR2之后,NLS_COMP设置必须是"LINGUISTIC":
ALTER SESSION SET NLS_COMP=LINGUISTIC;
Run Code Online (Sandbox Code Playgroud)
joe*_*joe 28
您可以在where条件的两侧使用lower或upper函数
小智 13
您还可以使用正则表达式:
SELECT * FROM TABLE WHERE REGEXP_LIKE (TABLE.NAME,'IgNoReCaSe','i');
Run Code Online (Sandbox Code Playgroud)
您可以在查询中使用upper()函数,为了提高性能,您可以使用基于函数的索引
CREATE INDEX upper_index_name ON table(upper(name))
Run Code Online (Sandbox Code Playgroud)
小智 5
您可以使用upper或lower函数将两个值转换为大写或小写:
Select * from table where upper(table.name) like upper('IgNoreCaSe')
Run Code Online (Sandbox Code Playgroud)
或者
Select * from table where lower(table.name) like lower('IgNoreCaSe');
Run Code Online (Sandbox Code Playgroud)
小智 5
在12.2及以上版本中,使查询不区分大小写的最简单方法是:
SELECT * FROM TABLE WHERE TABLE.NAME COLLATE BINARY_CI Like 'IgNoReCaSe'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
126049 次 |
| 最近记录: |