【发布时间】:2015-05-06 06:54:44
【问题描述】:
我在表TB_ORDERS 中有一个名为statu 的字段。
如果字段状态具有数字值,我应该从报告中排除该记录 - 只应显示字母顺序。
我该怎么做?
【问题讨论】:
标签: sql oracle oracle-apex regexp-like
我在表TB_ORDERS 中有一个名为statu 的字段。
如果字段状态具有数字值,我应该从报告中排除该记录 - 只应显示字母顺序。
我该怎么做?
【问题讨论】:
标签: sql oracle oracle-apex regexp-like
我应该从报告中排除该记录 - 应该只显示字母。
您可以在过滤谓词中使用 REGEXP_LIKE。
NOT REGEXP_LIKE(status, '[[:digit:]]+')或者,
NOT REGEXP_LIKE(status, '\d+')或者,
NOT REGEXP_LIKE(status, '[0-9]+')例如,
SELECT * FROM TB_ORDERS
WHERE NOT REGEXP_LIKE(status, '[[:digit:]]+');
演示
SQL> WITH TB_ORDERS AS(
2 SELECT 'abc123abc' status FROM dual UNION ALL
3 SELECT 'abcabc' status FROM dual UNION ALL
4 SELECT 'abcabc123' status FROM dual UNION ALL
5 SELECT '123abcabc123' status FROM dual
6 )
7 SELECT * FROM TB_ORDERS
8 WHERE NOT REGEXP_LIKE(status, '[[:digit:]]+');
STATUS
------------
abcabc
SQL>
或者,
SQL> WITH TB_ORDERS AS(
2 SELECT 'abc123abc' status FROM dual UNION ALL
3 SELECT 'abcabc' status FROM dual UNION ALL
4 SELECT 'abcabc123' status FROM dual UNION ALL
5 SELECT '123abcabc123' status FROM dual
6 )
7 SELECT * FROM TB_ORDERS
8 WHERE NOT REGEXP_LIKE(status, '\d+');
STATUS
------------
abcabc
SQL>
或者,
SQL> WITH TB_ORDERS AS(
2 SELECT 'abc123abc' status FROM dual UNION ALL
3 SELECT 'abcabc' status FROM dual UNION ALL
4 SELECT 'abcabc123' status FROM dual UNION ALL
5 SELECT '123abcabc123' status FROM dual
6 )
7 SELECT * FROM TB_ORDERS
8 WHERE NOT REGEXP_LIKE(status, '[0-9]+');
STATUS
------------
abcabc
SQL>
更新应 OP 的要求
SQL> WITH TB_ORDERS AS(
2 SELECT '*abc123abc' status FROM dual UNION ALL
3 SELECT 'ab*cabc' status FROM dual UNION ALL
4 SELECT '****' status FROM dual UNION ALL
5 SELECT '123abcabc123' status FROM dual
6 )
7 SELECT * FROM TB_ORDERS
8 WHERE NOT REGEXP_LIKE(status, '[0-9]+');
STATUS
------------
ab*cabc
****
SQL>
【讨论】:
*。请参阅答案中的更新。效果很好。