select * from table_Name where name ="red"
我要把“红”和“红”都拿来。例如:我需要在同一个语句中同时使用upper和lower。我该怎么做?
q1qsirdb1#
您可以在会话中使用不区分大小写的参数 'NLS_SORT=BINARY_CI' . 会话级别有两个参数:NLS_COMP NLS_SORT 让我们看一个演示:正常情况:
'NLS_SORT=BINARY_CI'
NLS_SORT
SQL> with names as ( select 'Vishnu' name from dual ) -- Your query starts here select * from names where name='vIsHnU';no rows selected
SQL> with names as
(
select 'Vishnu' name from dual
)
-- Your query starts here
select * from names where name='vIsHnU';
no rows selected
不区分大小写的方法:
SQL> alter session set nls_comp='LINGUISTIC';Session alteredSQL> alter session set nls_sort='BINARY_CI';Session alteredSQL> with names as ( select 'Vishnu' name from dual ) -- Your query starts here select * from names where name='vIsHnU';NAME ------Vishnu
SQL> alter session set nls_comp='LINGUISTIC';
Session altered
SQL> alter session set nls_sort='BINARY_CI';
NAME
------
Vishnu
再举一个例子:
SQL> with names as ( select 'red' name from dual union all select 'RED' from dual ) -- Your query starts here select * from names where name='rEd';NAME----redRED
select 'red' name from dual union all
select 'RED' from dual
select * from names where name='rEd';
----
red
RED
为了提高性能,还可以创建不区分大小写的 INDEX .例如:
INDEX
create index names_ci_indx on names(NLSSORT(name,'NLS_SORT=BINARY_CI'));
现在,有一些方法可以提高上述事务的性能。请阅读oracle–不区分大小写排序和比较
zynd9foi2#
select * from table_Name where lower(name) ="red"
或
select * from table_Name where upper(name) ="RED"
这不能在上使用索引 name . 根据所使用的表达式创建基于函数的索引可能是合适的。
name
2条答案
按热度按时间q1qsirdb1#
您可以在会话中使用不区分大小写的参数
'NLS_SORT=BINARY_CI'
. 会话级别有两个参数:NLS_COMP
NLS_SORT
让我们看一个演示:正常情况:
不区分大小写的方法:
再举一个例子:
为了提高性能,还可以创建不区分大小写的
INDEX
.例如:
现在,有一些方法可以提高上述事务的性能。请阅读oracle–不区分大小写排序和比较
zynd9foi2#
或
这不能在上使用索引
name
. 根据所使用的表达式创建基于函数的索引可能是合适的。