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

如何将AWS Athena中复杂字符串列转换为整数?

解决方案

首先,你遇到的错误是因为正则表达式'([A-Za-z]'存在未闭合的括号,导致语法不合法。下面是修正后的SQL查询,同时优化了逻辑以满足你的需求:

SELECT 
    CASE
        -- 排除包含字母、空格或横杠的非数值内容
        WHEN regexp_like(employee_size, '[A-Za-z]') OR employee_size LIKE '% %' OR employee_size LIKE '%-%' THEN NULL
        -- 处理小数格式,舍去小数部分取整
        WHEN employee_size LIKE '%.%' THEN CAST(FLOOR(CAST(employee_size AS DECIMAL)) AS INTEGER)
        -- 处理纯整数格式
        ELSE CAST(employee_size AS INTEGER)
    END AS employee_size 
FROM 
    "table_name";

逻辑说明:

  • 第一步先过滤掉所有包含字母、空格或横杠的字符串,直接返回null,覆盖了'GREATER THAN 2000'、'500 - 999'、'unknown'这类无法转换的情况。
  • 对于小数格式(如'28.00'、'5.64'),先转换为DECIMAL类型,再用FLOOR()函数舍去小数部分,最后转为INTEGER。
  • 剩余的纯数字字符串(如'563')直接转换为INTEGER。

如果不需要严格向下取整,只是截断小数部分,也可以简化为CAST(CAST(employee_size AS DECIMAL) AS INTEGER),效果和FLOOR()对于正数是一致的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 18:17:36