【问题标题】:How to use class in LIKE clause in teradata如何在 teradata 的 LIKE 子句中使用类
【发布时间】:2020-10-23 17:47:39
【问题描述】:

我已经编写了以下查询,它应该返回所有没有任何字母字符(Capital)的值。

SELECT TOP 100 POSTAL_CD
FROM CUST_PROD_LOC
WHERE POSTAL_CD NOT LIKE '%[A-Z]%';

但结果如下,其中包括字母字符。

45242-4001 
21014-3731 
M4J 3S2 
78664 
60636 
37926 
560071 
R2J 4G7 
0 
95605-1506 
NG5 6QW 
98133-7571 

我不知道,LIKE 子句中的类是如何工作的?

【问题讨论】:

    标签: teradata sql-like


    【解决方案1】:

    WHERE POSTAL_CD NOT LIKE '%[A-Z]%' 行将搜索文字字符串 [A-Z]。您应该改用REGEXP 函数:

    SELECT TOP 100 POSTAL_CD 
    FROM CUST_PROD_LOC 
    WHERE REGEXP_SUBSTR(POSTAL_CD, '[A-Z]') IS NULL -- Rows with no cap. string characters
    

    这将返回没有字符串字符的值。我没有要测试的 TD 系统,因此您可能需要摆弄参数和正则表达式模式。试试看,然后告诉我。

    另外,没有ORDER BYTOP N 有点没用。如果顺序无关紧要,请改用SAMPLE 100

    TD Manual

    【讨论】:

      猜你喜欢
      • 2015-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-04
      • 2019-04-29
      • 1970-01-01
      • 1970-01-01
      • 2021-08-10
      相关资源
      最近更新 更多