SELECT *
FROM table_name
WHERE name LIKE 'demo_%'
AND VALIDATE_CONVERSION(SUBSTR(name, 5) AS NUMBER) = 1;
或者,在大多数版本中:
SELECT *
FROM table_name
WHERE REGEXP_LIKE(name, '^demo\d+$');
其中,对于示例数据:
CREATE TABLE table_name (name) AS
SELECT 'demo20' FROM DUAL UNION ALL
SELECT 'demo26' FROM DUAL UNION ALL
SELECT 'demo2a' FROM DUAL UNION ALL
SELECT 'demo' FROM DUAL UNION ALL
SELECT 'any' FROM DUAL;
2条答案
按热度按时间svmlkihl1#
您可以使用REGEXP_LIKE实现此目的
此处测试:https://sqlize.online/sql/oracle19/4284f904af9157489dc4a0c9d9515c7c/
当您需要过滤器字符串不包含额外的字符后的数字,你可以使用下一个:
vshtjzan2#
可以使用查找以子字符串
demo
开头且至少包含以下一个字符的名称:如果要查找仅后跟尾随数字的
demo
,则可以在Oracle 12中用途:或者,在大多数版本中:
其中,对于示例数据:
两个输出:
| 姓名|
| - ------|
| 演示20|
| 演示26|
fiddle