SELECT VALUE FROM BILL WHERE VALUE='ABC123';
搜索结果会带回abc123,ABC123,aBc123,ABc123的记录
任何人都可以帮助我吗?
答案 0 :(得分:3)
两种可能的解决方案:
首先:
SELECT value
FROM bill
WHERE upper(VALUE) = 'ABC123';
第二
ALTER SESSION SET nls_comp = Linguistic;
ALTER SESSION SET nls_sort = XGerman_CI; -- or any other language, e.g. XWEST_EUROPEAN_CI
SELECT value
FROM bill
WHERE VALUE = 'ABC123';
nls_sort参数的_CI
后缀告诉Oracle比较“不区分大小写”。
在这两种情况下,除非您创建基于函数的索引,否则Oracle不会使用索引。
有关可能的NLS_SORT值的完整列表,请参阅手册:http://docs.oracle.com/cd/E11882_01/server.112/e10729/applocaledata.htm#i637232
答案 1 :(得分:1)
使用大写或小写功能,并提供您需要的确切值。
select value from bill where upper(value)='ABC123'
如果您需要所有值,例如abc,aBc,Abc等,您可以在where
条件下使用以下条件
value in ('abc','aBc','Abc','ABC')
答案 2 :(得分:1)
你应该写:
SELECT VALUE FROM BILL WHERE upper(VALUE)='ABC123';
但如果存在,你将失去价值指数的好处。 但是,您可以在upper(value)上创建一个基于函数的索引。