基本上,在SELECT语句中,如果文本列中有一个有效的数字,它应该在结果中转换为整数。如果它不是一个有效的数字,它应该只显示什么都没有/空白。
现在,当文本不是有效数字时,强制转换失败。
使用Teradata 14,您可以利用正则表达式嗅出嵌入的字符数据。
SELECT CASE WHEN REGEXP_INSTR('ABC123', '[A-Za-z_]') > 0
THEN 1
ELSE 0
END;
进一步,您可以尝试以下内容将字母数字值替换为NULL:
SELECT CAST((CASE WHEN REGEXP_INSTR({column}, '[A-Za-z_]') > 0
THEN NULL
ELSE {column}
END) AS SMALLINT
FROM {MyDB}.{MyTable};