首页 > 解决方案 > SQL Server 2019,使用 T-SQL,我正在尝试从订单表中的订单号列中提取“-”和“/”之间的数据值

问题描述

SQL 数据库的作业表中的订单号列具有以下结构:“2006925-06/01”。

“-”和“/”之间的字符串值表示链接到作业表中作业订单号的销售订单行。我正在尝试使用以下语句来提取值销售订单行值并将其呈现为 PulledString。当我执行语句时出现错误L

传递给 LEFT 或 SUBSTRING 函数的长度参数无效。

不知道出了什么问题?

  , CASE WHEN [ordernumber] Is Not Null THEN 
    SUBSTRING([ordernumber],CHARINDEX('-', [ordernumber], CHARINDEX('-', [ordernumber]) + 1) -0,
        LEN([ordernumber]) - CHARINDEX('/', [ordernumber], CHARINDEX('/', [ordernumber]) + 1) - 
            CHARINDEX('-', REVERSE(rtrim([ordernumber])))) ELSE '' END AS PulledString 

标签: sql-server

解决方案


如果 is 总是两个字符,这很简单:

select left(stuff(ordernumber, 1, charindex('-', ordernumber), ''), 2)

推荐阅读