如何从Teradata表中筛选列中的非ASCII字符
我想计算插入到列中的特殊字符(非ASCII)的数量。 下面是我写的代码,它没有按预期工作如何从Teradata表中筛选列中的非ASCII字符,teradata,teradata-sql-assistant,Teradata,Teradata Sql Assistant,我想计算插入到列中的特殊字符(非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不支持LIKE中的字符范围。但是您可以使用RegExp\u Replace 删除非ASCII字符并检查剩余字符长度 SUM(Char_Leng
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不支持LIKE中的字符范围。但是您可以使用
RegExp\u Replace
删除非ASCII字符并检查剩余字符长度
SUM(Char_Length(RegExp_Replace(BEST_ADDR_1, '[a-z0-9]', '', 1, 0, 'i')))
我想OP会询问那些从128开始的字符字节值。不仅仅是字母和数字。当我阅读答案时,
REGEXP\u REPLACE
会搜索BEST\u ADDR\u 1
,查找[a-z0-9
],并将其替换为从第一个字符(1)开始的'
,并替换所有出现的字符(0)使用不区分大小写的匹配。然后,生成的字符串将被传递到CHAR\u LENGTH
,以计算剩余字符串的长度SUM()
将聚合每行的结果。