【发布时间】:2016-10-24 12:03:25
【问题描述】:
我在名为Parent_ID 的列中有这个字符串。那里存在的字符串示例:
RBIA-3340-CU-XM-01-D/RBIA-3340-01-4-D-34080-11441A1-2TC-001/B1
我想要的是:
RBIA-3340-CU-XM-01-D/RBIA-3340-01-4-D-34080-11441A1-2TC-001
没有/B1
当我写这段代码时:
SELECT Substring([parent_id], 1,
CHARINDEX('/B',parent_id,25)-1)
FROM [c3d_aug].[dbo].[atta_properties]
我收到了这个错误:
"Msg 537, Level 16, State 3, Line 1 传递给的长度参数无效 LEFT 或 SUBSTRING 函数。"
经过测试,我不小心将-1 更改为-0.5,它工作正常。
SELECT Substring([parent_id],1,
CHARINDEX('/B',parent_id,25)-0.5)
FROM [c3d_aug].[dbo].[atta_properties]
谁能解释为什么?!请注意,上面给出的主字符串不包含任何空格。
【问题讨论】:
-
不,在您的示例中,CHARINDEX 返回 60
-
声明@Parentid varchar(max) = 'RBIA-3340-CU-XM-01-D/RBIA-3340-01-4-D-34080-11441A1-2TC-001/B1' 选择charindex('/B', @parentid) -- 返回 60 选择子字符串(@parentid,1, charindex('/B', @parentid) - 1)
标签: sql-server string tsql substring charindex