首页 > 解决方案 > SQL Oracle 中的通配符

问题描述

我试图在 Oracle DB 中查找以 A、B 或 C 开头的所有名称,我编写了以下语法:

SELECT NUME FROM JUCATORI
WHERE NUME LIKE '[ABC]%';

但它没有给我任何名称(也没有错误),即使我确定我的数据库名称中的名称以 A、B 或 C 开头。

标签: oraclewildcard

解决方案


LIKE不适用于字符集。(我认为 T-SQL 扩展LIKE为处理此类表达式,但 Oracle 的 SQL 没有。)您不会收到错误,因为LIKE '[ABC]%'查找以左括号开头的字符串,后跟 A,然后是 B,然后是C,然后是右括号

所以要么使用OR

SELECT nume FROM jucatori WHERE nume LIKE 'A%' OR nume LIKE 'B%' OR nume LIKE 'C%';

或正则表达式:

SELECT nume FROM jucatori WHERE REGEXP_LIKE(nume, '^[ABC]');

推荐阅读