【发布时间】:2016-10-27 13:52:29
【问题描述】:
我有一个包含“描述”列的表格,其中包含以下值:
- OPTestMachine
- OPManualTesting
- OP1010
因此,获取值的 select 语句将是
SELECT description
FROM operation;
我想提取数字“1010”(或任何与 substr() 条件匹配的字符串)并尽可能将“找到的字符串”转换为整数。
所以我想出了这个:
SELECT to_number(substr(description, 3, 4))
FROM operation
WHERE regexp_like(substr(description, 3, 4), '^\d+(\.\d+)?$', '')
结果很简单:“1010”
这对我来说效果很好。
现在对我来说最困难的部分:我想在 WHERE 子句中使用 substr()-result
类似这样的:
SELECT to_number(substr(description, 3, 4))
FROM operation
WHERE regexp_like(substr(description, 3, 4), '^\d+(\.\d+)?$', '')
AND substr(description, 3, 4) < 2000;
当我这样做时,我收到错误“无效号码”。我想这是因为服务器解析 select 语句的顺序。
如果您能提供任何帮助,那就太好了!
【问题讨论】:
标签: sql oracle substr regexp-like