我有以下查询。我正在数据库中查找包含短语“ ssn”的任何表。它应该包括“ SSN”。由于我使用的是LIKE运算符和%通配符,因此我希望查询结果中将显示诸如“ Employee_SSN”,“ Spouse SSN”,“ ssn”之类的术语。但是事实并非如此。实际上,如果我不使用所有大写字母输入SSN,它将被拒绝。我不确定是否不小心更改了其中一项设置或类似设置,但这对我来说似乎不可行。
select owner, table_name from all_tab_columns where column_name LIKE x
'%SSN%'
create table so_case_cols (
SSN varchar2(11),
"ssn" varchar2(11),
"ssN" varchar2(11));
select * from user_tab_cols where upper(column_name) like '%SSN%';
我们建议您不要使用区分大小写的列名,但是如果使用,则需要考虑这一点。
一种常见的技术是在您的PREDICATE子句中使用UPPER()或LOWER()函数,然后搜索大写或小写文本,它将覆盖所有可能的排列。
12c第2版(12.2)也使搜索文本值更加容易。 Oracle-Base has a nice how-to here.