SELECT VALUE FROM BILL WHERE VALUE='ABC123';
搜索结果也会带回带有 abc123、ABC123、aBc123、ABc123 的记录
谁能帮帮我吗?
两种可能的解决方案:
第一的:
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
使用上或下功能并给出您需要的确切值。
select value from bill where upper(value)='ABC123'
如果您需要 abc、aBc、Abc 等所有值,您可以在下面where
根据您的要求使用
value in ('abc','aBc','Abc','ABC')
你应该写:
SELECT VALUE FROM BILL WHERE upper(VALUE)='ABC123';
但是,如果存在,您将失去价值指数的好处。
但是,您可以在 upper(value) 上创建基于函数的索引。