我有一个statu
在表中命名的字段TB_ORDERS
。
如果字段状态有一个数值,我应该从报告中排除该记录——应该只显示字母。
我怎么做?
我有一个statu
在表中命名的字段TB_ORDERS
。
如果字段状态有一个数值,我应该从报告中排除该记录——应该只显示字母。
我怎么做?
我应该从报告中排除该记录 - 只应显示字母顺序。
您可以在过滤谓词中使用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>