如何在Oracle SQL中使用charlist通配符?

时间:2014-06-20 03:31:21

标签: sql oracle oracle10g

我正在尝试查找姓氏的第一个字母在's'和'z'之间的记录。 这就是我试图这样做的方式:

WHERE UPPER(last_name) LIKE '[S-Z]%'

我知道有人会问,所以是的,数据库中有记录,姓氏以其中一个字母开头。

提前致谢。

2 个答案:

答案 0 :(得分:5)

您不能将正则表达式语法与普通like一起使用,但您可以改为使用regexp_like

WHERE REGEXP_LIKE(UPPER(last_name), '^[S-Z]')

或稍微蛮力的方法:

WHERE UPPER(SUBSTR(last_name, 1, 1)) BETWEEN 'S' AND 'Z'

或甚至更明确地说:

WHERE UPPER(SUBSTR(last_name, 1, 1)) IN ('S','T','U','V','W','X','Y','Z')

答案 1 :(得分:2)

我们可以像这样使用REGEXP功能,它也会改善性能 -

select * from your_table where REGEXP_LIKE(upper(last_name),'^[S-Z](*)');