sql-server - 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
解决方案
如果 is 总是两个字符,这很简单:
select left(stuff(ordernumber, 1, charindex('-', ordernumber), ''), 2)