sql - 通配符搜索的工作与预期相反,我是否错误地编写了查询?
问题描述
我有以下查询。我正在寻找我的数据库中包含短语“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 在这里有一个很好的方法。
推荐阅读
- php - 将 esc_attr_e() 连接到 WordPress 中的变量问题
- julia - 为什么朱莉娅对一些大数字返回非零?
- rust - 如果您只是将数据视为字节,Rust 的 memmap 是否可以安全使用?
- php - Array to String Conversion Error: PHP中如何解决这个错误,我提供了代码的控制流程
- javascript - 如何在 javascript 中获取 iPhone 7 的设备旋转?
- python - 我在哪里可以获取 discord.py 的令牌?
- java - Android中的空指针异常 - onActivityResult()
- html - 复选框显示为文本框
- r - 修复了 R 中条形图中变量特征的颜色
- python - 不断收到“找不到页面”。该怎么办?