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 

您可以使用upperlower函数将这两个值转换为大写或小写:

 Select * from table where upper(table.name) like upper('IgNoreCaSe') or lower(table.name) like lower('IgNoreCaSe'); 

也不要忘记明显,表中的数据是否需要有情况? 您只能以小写插入行(或者将现有的数据库行转换为小写),并从头开始进行处理。