如何从Teradata表中筛选列中的非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

我想计算插入到列中的特殊字符(非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_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()
将聚合每行的结果。