SQL for Mixed Case筛选器
我只是想知道如何搜索任何组合的案例。例如,我想找到姓'davies'的所有员工,但我希望能够找到“DavIes”或“DAVies”等任何组合的案例。这是我试过的。SQL for Mixed Case筛选器
SELECT LAST_NAME
FROM EMPLOYEES
WHERE DEPARTMENT_ID = (SELECT DEPARTMENT_ID
FROM EMPLOYEES
WHERE LAST_NAME = '[Dd][Aa][Vv][Ii][Ee][Ss]');
我会用UPPER
或LOWER
功能和IN
SELECT LAST_NAME
FROM EMPLOYEES
WHERE DEPARTMENT_ID IN (
SELECT DEPARTMENT_ID
FROM EMPLOYEES
WHERE UPPER(LAST_NAME) = 'DAVIES'
);
不幸的是无效的索引的使用。
你为什么需要IN?你正在寻找雇员的姓氏 – maSTAShuFu
@maSTAShuFu是的,它很奇怪。我没有注意到他正在查询子查询中的同一张表。我错误地认为它必须是不同的表格。 –
切换到=,它的工作原理,谢谢。 – Glaz
使用UPPER
SELECT *
FROM EMPLOYEES
WHERE UPPER(LAST_NAME) = 'DAVIES'
我会写这UPPER或降低名称的函数的索引。这样数据库可以使用基于功能的索引来搜索,而不仅仅是姓氏。 [文档](https://docs.oracle.com/cd/E11882_01/appdev.112/e41502/adfns_indexes.htm#ADFNS257) – xQbert
[Oracle中区分大小写的搜索]的可能重复(https://*.com/问题/ 5391069 /不区分大小写的搜索在oracle中) – xQbert