Oracle DB:我怎样才能写查询忽略大小写?
正如我写的标题,我有SQL查询,在Oracle DB上运行,可以说:
SELECT * FROM TABLE WHERE TABLE.NAME Like 'IgNoReCaSe'
如果我愿意,那个查询会返回“IGNORECASE”,“ignorecase”或者它们的组合,那么这个怎么做呢?
这可能吗?
您可以使用ALTER SESSION语句来设置比较,以区分大小写。 看这个常见问题 。
alter session set NLS_COMP=ANSI; alter session set NLS_SORT=BINARY_CI;
Select * from table where upper(table.name) like upper('IgNoreCaSe');
或者,replace为较低的上限。
您可以在where条件的两边使用lower或upper函数
你也可以使用正则expression式:
SELECT * FROM TABLE WHERE REGEXP_LIKE (TABLE.NAME,'IgNoReCaSe','i');
您可以在查询中使用upper()函数,并且可以使用函数库索引来提高性能
CREATE INDEX upper_index_name ON table(upper(name))
…也可以将查询转换为上面或下面的外部:
tableName:= UPPER(someValue || '%');
…
Select * from table where upper(table.name) like tableName
您可以使用upper
或lower
函数将这两个值转换为大写或小写:
Select * from table where upper(table.name) like upper('IgNoreCaSe') or lower(table.name) like lower('IgNoreCaSe');
也不要忘记明显,表中的数据是否需要有情况? 您只能以小写插入行(或者将现有的数据库行转换为小写),并从头开始进行处理。