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

如何在SAS Enterprise Guide的PROC SQL中提取字符列特定值?

在SAS PROC SQL中提取JSON字符串里的Top值创建新列

方法一:使用SAS内置JSON函数(推荐,SAS 9.4及以上版本支持)

由于TYPE列存储的是标准JSON格式字符串,可直接用SAS的JSON提取函数获取Top对应的值,再转换为数值型:

PROC SQL;
    CREATE TABLE WANT AS
    SELECT 
        ID,
        TYPE,
        /* 提取Top对应的字符值并转为数值 */
        INPUT(JSON_EXTRACT(TYPE, '$.Top'), BEST32.) AS COL1
    FROM YOUR_TABLE_NAME; /* 替换为你的源表名 */
QUIT;
  • JSON_EXTRACT(TYPE, '$.Top'):从JSON字符串中提取Top键对应的字符值
  • INPUT(..., BEST32.):将提取到的字符型数值转换为SAS数值型,适配整数、小数等格式

方法二:字符串处理(兼容低版本SAS)

如果你的SAS版本不支持JSON函数,可通过字符串定位、截取的方式实现:

PROC SQL;
    CREATE TABLE WANT AS
    SELECT 
        ID,
        TYPE,
        INPUT(
            /* 截取"Top:"后的内容,再以逗号或大括号为分隔取第一部分 */
            SCAN(SUBSTR(TYPE, INDEX(TYPE, '"Top":') + 6), 1, ',}'),
            BEST32.
        ) AS COL1
    FROM YOUR_TABLE_NAME; /* 替换为你的源表名 */
QUIT;
  • INDEX(TYPE, '"Top":'):定位"Top":在字符串中的起始位置
  • SUBSTR(..., +6):截取"Top:"之后的部分("Top:"共6个字符)
  • SCAN(..., 1, ',}'):以逗号或右大括号为分隔符,取第一部分(即Top对应的数值字符串)
  • INPUT(..., BEST32.):转换为数值型

注意事项

  • 确保TYPE列的JSON格式规范,Top键名始终以双引号包裹且大小写与代码中的"Top"一致
  • 如果存在Top键缺失的情况,可添加CASE语句处理空值,例如:
    CASE WHEN INDEX(TYPE, '"Top":') > 0 THEN INPUT(..., BEST32.) ELSE . END AS COL1
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 13:41:01