通配符搜索正以相反的方式工作,而o会期望它们不正确,我写的查询不正确吗?

问题描述 投票:0回答:1

我有以下查询。我正在数据库中查找包含短语“ ssn”的任何表。它应该包括“ SSN”。由于我使用的是LIKE运算符和%通配符,因此我希望查询结果中将显示诸如“ Employee_SSN”,“ Spouse SSN”,“ ssn”之类的术语。但是事实并非如此。实际上,如果我不使用所有大写字母输入SSN,它将被拒绝。我不确定是否不小心更改了其中一项设置或类似设置,但这对我来说似乎不可行。

select owner, table_name  from all_tab_columns  where column_name LIKE x

'%SSN%'

sql oracle sql-like
1个回答
0
投票
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()函数,然后搜索大写或小写文本,它将覆盖所有可能的排列。

enter image description here

12c第2版(12.2)也使搜索文本值更加容易。 Oracle-Base has a nice how-to here.

© www.soinside.com 2019 - 2024. All rights reserved.