【问题标题】:Exclude numeric values from report从报告中排除数值
【发布时间】:2015-05-06 06:54:44
【问题描述】:

我在表TB_ORDERS 中有一个名为statu 的字段。

如果字段状态具有数字值,我应该从报告中排除该记录 - 只应显示字母顺序

我该怎么做?

【问题讨论】:

    标签: sql oracle oracle-apex regexp-like


    【解决方案1】:

    我应该从报告中排除该记录 - 应该只显示字母。

    您可以在过滤谓词中使用 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>
    

    【讨论】:

    • 嗨,谢谢你的回答。刚刚注意到一组状态有特殊字符,比如 * 。所以如果我包括 'NOT REGEXP_LIKE(status, '[0-9]+')',则有 * 的状态正在消失。请帮助
    • @SitharaJayachandran 不,它不会排除 *。请参阅答案中的更新。效果很好。
    猜你喜欢
    • 2013-01-18
    • 1970-01-01
    • 2023-03-28
    • 2012-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-22
    • 2011-07-01
    相关资源
    最近更新 更多