从Informatica迁移至BigQuery:IS_NUMERIC与IS_SPACES等效函数咨询
Informatica IS_NUMERIC 和 IS_SPACES 在 BigQuery 中的等效实现
IS_NUMERIC 等效方案
Informatica 的 IS_NUMERIC 用于判断字符串是否为有效数值(支持正负号、小数点,忽略前后空格),在 BigQuery 中有两种常用替代方式:
使用 SAFE_CAST + IS_NOT_NULL
利用SAFE_CAST尝试将字符串转为数值类型,转换成功则说明是有效数值:SELECT CASE WHEN IS_NOT_NULL(SAFE_CAST(your_column AS NUMERIC)) THEN TRUE ELSE FALSE END AS is_numeric FROM your_table;注:
NUMERIC适用于高精度数值,若需支持科学计数法,可改用FLOAT64类型。使用正则表达式
更精准控制数值格式(比如是否允许正负号、小数点位置),同时兼容前后空格:SELECT CASE WHEN REGEXP_CONTAINS(your_column, r'^\s*[+-]?(\d+(\.\d*)?|\.\d+)\s*$') THEN TRUE ELSE FALSE END AS is_numeric FROM your_table;
IS_SPACES 等效方案
Informatica 的 IS_SPACES 判断字符串是否全部由空白字符组成(包括空字符串、纯空格、制表符等),BigQuery 中可用以下方式替代:
使用 TRIM 函数
去除前后空白后判断是否为空字符串,适用于纯空格场景:SELECT CASE WHEN TRIM(your_column) = '' THEN TRUE ELSE FALSE END AS is_spaces FROM your_table;使用正则表达式
匹配所有空白字符(包括空格、制表符、换行符等):SELECT CASE WHEN REGEXP_CONTAINS(your_column, r'^\s*$') THEN TRUE ELSE FALSE END AS is_spaces FROM your_table;
内容的提问来源于stack exchange,提问作者himanshu bajaj
相关产品推荐
相关产品推荐

