BigQuery中CAST转换字符串为NUMERIC报错原因咨询
为什么字符串'production-ross-3'无法转换为NUMERIC/整数类型?
NUMERIC/整数类型的格式限制:SQL里的
NUMERIC(包括INT这类整数类型)只接受符合数字规范的字符串,合法内容只能是0-9的数字、开头可选的正负号(+/-),以及NUMERIC类型允许的小数点。其他任何字符(比如字母、中间的连字符)都会触发转换错误。你的字符串不符合要求:
'production-ross-3'里包含大量字母(production、ross)和非开头的连字符,这些都不属于合法数字的组成部分。哪怕末尾有数字3,整个字符串的结构完全不是纯数字格式,数据库自然无法把它识别为有效的NUMERIC值,所以会抛出Invalid NUMERIC value: production-ross-3错误。如果要提取其中的数字转换:要是你想从这个字符串里提取末尾的数字再转成NUMERIC,可以用字符串处理函数。举两个常见数据库的例子:
- PostgreSQL:
SELECT CAST(SUBSTRING('production-ross-3' FROM '\d+$') AS NUMERIC); - MySQL:
SELECT CAST(REGEXP_SUBSTR('production-ross-3', '[0-9]+$') AS NUMERIC);
- PostgreSQL:
内容的提问来源于stack exchange,提问作者Juanca
相关产品推荐
相关产品推荐

