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

如何使用substring与charindex解析列内容提取行号并创建新列

从WQ_INFORMATION字段提取行号的修正方案

报错原因说明

原有公式报错的核心原因是:

  • 固定从第20位查找逗号的逻辑不兼容不同长度的字段内容
  • 当指定位置找不到逗号时,charindex返回0,做减法后得到负数长度,不符合substring函数的参数要求

适配1-4位行号的SQL写法(SQL Server环境)

直接替换原有查询逻辑即可,无需额外调整:

SELECT 
  SUBSTRING(
    WQ_INFORMATION,
    CHARINDEX('Line:', WQ_INFORMATION) + 5,
    ISNULL(NULLIF(CHARINDEX(',', WQ_INFORMATION, CHARINDEX('Line:', WQ_INFORMATION)) - (CHARINDEX('Line:', WQ_INFORMATION) + 5), 0), 4)
  ) AS Line_Number
FROM 你的实际表名

写法优化说明

  • 改为从Line:的结束位置向后查找第一个逗号,适配不同前缀长度的字段内容
  • 增加容错判断:当字段中Line:后没有逗号时,默认取4位字符,刚好适配最长4位行号的需求,避免负长度报错
  • 自动适配1-4位任意长度的行号,无需手动调整参数

MySQL环境适配写法

如果你使用的是MySQL数据库,使用以下写法即可:

SELECT 
  SUBSTRING(
    WQ_INFORMATION,
    LOCATE('Line:', WQ_INFORMATION) + 5,
    IF(LOCATE(',', WQ_INFORMATION, LOCATE('Line:', WQ_INFORMATION)) > 0,
       LOCATE(',', WQ_INFORMATION, LOCATE('Line:', WQ_INFORMATION)) - (LOCATE('Line:', WQ_INFORMATION) + 5),
       4
    )
  ) AS Line_Number
FROM 你的实际表名

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 11:54:00