我要求过滤表中的名称。
示例表名: - 学生
列: - 名称,类。
The date is like
名称----班级
HIGHSPEED --- C
HIGHSPEED11 --- C1
HIGHSPEED22 --- C2
师范大学-------------Ñ
正常1 ------------- N1
正常2 ------------- N2
像这样我有数据SRQ,PWE ......
我的要求是我需要使用名称删除一些数据......
SELECT distinct name FROM student WHERE UPPER (name) LIKE 'SRP%'
Or UPPER (name) LIKE 'HIGHSPEED%'
Or UPPER (name) LIKE 'SRQ%'
Or UPPER (name) LIKE 'PWE%'
Or UPPER (name) LIKE 'SPINTERFACE%'
Or UPPER (name) LIKE 'SRM%'
请告诉我任何其他选项,而不是使用OR条件......?
答案 0 :(得分:2)
我不是Oracle用户,但通过他们的文档快速浏览表明Oracle支持POSIX扩展正则表达式(ERE)。因此,与查询中的名称匹配的正则表达式将是:
^(SRP|HIGHSPEED|SRQ|PWE|SPINTERFACE|SRM)
看起来Oracle提供了REGEXP_LIKE函数,因此可以使用正则表达式重写您的查询:
SELECT distinct name FROM student WHERE REGEXP_LIKE(UPPER(name), '^(SRP|HIGHSPEED|SRQ|PWE|SPINTERFACE|SRM)');
我担心我无法访问Oracle进行测试,但这是正则表达式的样子。