【问题标题】:How to filter Non ASCII character in a column from a Teradata Table如何从 Teradata 表中过滤列中的非 ASCII 字符
【发布时间】:2019-04-04 06:30:13
【问题描述】:

我想计算插入列中的特殊字符(非 ASCII)的数量。 下面是我写的代码,它没有按预期工作,

  SELECT count(BEST_ADDR_1) Inv_cnt
FROM DP_VEDW_SRC_MDB_NGN.ACCT_SUM_VIEW 
WHERE BEST_ADDR_1 NOT LIKE '%[^a-z0-9A-Z]%')

提前致谢

【问题讨论】:

    标签: teradata teradata-sql-assistant


    【解决方案1】:

    Teradata 不支持 LIKE 中的字符范围。但你可以使用RegExp_Replace

    去除非ASCII字符并检查剩余字符长度

    SUM(Char_Length(RegExp_Replace(BEST_ADDR_1, '[a-z0-9]', '', 1, 0, 'i')))
    

    【讨论】:

    • 我认为 OP 询问那些从 128 开始的字符字节值..不仅仅是字母和数字..
    • 当我阅读答案时,REGEXP_REPLACE 将在 BEST_ADDR_1 中搜索 [a-z0-9] 并将其替换为 ’’ 从第一个字符 (1) 开始并使用替换所有出现 (0)不区分大小写的匹配。然后将生成的字符串传递给CHAR_LENGTH 以计算剩余字符串的长度。 SUM() 将汇总每一行的结果。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-03
    • 2016-07-20
    • 1970-01-01
    • 2012-01-21
    • 2011-01-01
    相关资源
    最近更新 更多