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

如何在Oracle SQL中使用字符表通配符?,sql,oracle,oracle10g,Sql,Oracle,Oracle10g,我试图找到姓氏第一个字母在“s”和“z”之间的记录。 我就是这样做的: WHERE UPPER(last_name) LIKE '[S-Z]%' 我知道有人会问,所以数据库中有记录显示姓氏以其中一个字母开头 提前感谢。我们可以像这样使用REGEXP函数,它也会提高性能- select * from your_table where REGEXP_LIKE(upper(last_name),'^[S-Z](*)'); 我们可以像这样使用REGEXP函数,这也将提高性能- select * fr

我试图找到姓氏第一个字母在“s”和“z”之间的记录。 我就是这样做的:

WHERE UPPER(last_name) LIKE '[S-Z]%'
我知道有人会问,所以数据库中有记录显示姓氏以其中一个字母开头


提前感谢。

我们可以像这样使用REGEXP函数,它也会提高性能-

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

我们可以像这样使用REGEXP函数,这也将提高性能-

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

不能将正则表达式语法与普通的
一起使用,但可以改用
regexp\u类

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')

不能将正则表达式语法与普通的
一起使用,但可以改用
regexp\u类

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')

通过
REGEXP_LIKE(姓氏“^([S-Z]|[S-Z])消除
UPPER
调用
@Alex Poole这非常有效!非常感谢你!通过
REGEXP_LIKE(姓氏“^([S-Z]|[S-Z])消除
UPPER
调用
@Alex Poole这非常有效!非常感谢你!