You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Redshift中提取VARCHAR类型字段的小数点前内容

解决Redshift中Vendors表vendor_id字段的格式处理问题

针对你描述的需求——将带小数的数值型vendor_id保留小数点前部分,字符串型值原样返回,可以用以下两种SQL实现方式:

方法一:正则表达式匹配处理

适用于严格匹配数字+.+数字格式的数值字符串,直接分割小数点取前半部分:

SELECT 
  CASE 
    WHEN REGEXP_INSTR(vendor_id, '^\\d+\\.\\d+$') > 0 THEN SPLIT_PART(vendor_id, '.', 1)
    ELSE vendor_id
  END AS cleaned_vendor_id
FROM Vendors;
  • REGEXP_INSTR用于判断字段是否符合纯小数格式(开头是数字,中间小数点,结尾是数字)
  • 符合条件的用SPLIT_PART按小数点分割,取第一部分作为结果;不符合的返回原字段

方法二:数值转换取整处理

更通用的方案,能兼容所有合法数值格式(比如123、123.45、0.99甚至123.这类格式):

SELECT 
  CASE 
    WHEN TRY_CAST(vendor_id AS NUMERIC) IS NOT NULL THEN CAST(FLOOR(TRY_CAST(vendor_id AS NUMERIC)) AS VARCHAR)
    ELSE vendor_id
  END AS cleaned_vendor_id
FROM Vendors;
  • TRY_CAST尝试将字段转为数值类型,转换失败时返回NULL,以此区分数值型和字符串型值
  • 转换成功的数值用FLOOR取整数部分,再转回字符串类型;转换失败的直接返回原字段

内容的提问来源于stack exchange,提问作者nodev_101

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 18:42:03