如何增加像这样的 nvarchar 字段中的第一个数字 0/0

How to increment the first number in a nvarchar field like this 0/0

我可以这样增加数字:

SELECT SUBSTRING('0/0', 1,1) +1 AS ExtractString;

但我需要它 return 每次只增加第一个数字的整数。

可能 有点过于复杂,但是,我认为 "pessimistic" 认为可能存在错误数据。使用标量值,这有效:

DECLARE @YourString varchar(5) = '0/0'

SELECT CONCAT(TRY_CONVERT(int,LEFT(V.YourString,CI.I)) +1, STUFF(V.YourString,1,ISNULL(CI.I,0),'')) AS ExtractString
FROM (VALUES(@YourString))V(YourString)
     CROSS APPLY(VALUES(NULLIF(CHARINDEX('/',V.YourString),0)-1))CI(I); --NULLIF incase of lack of /

如果您使用数据集:

SELECT CONCAT(TRY_CONVERT(int, LEFT(V.YourString, CI.I)) + 1, STUFF(V.YourString, 1, ISNULL(CI.I, 0), '')) AS ExtractString
FROM (VALUES ('1/2'),
             ('10/7'),
             ('9'),
             ('4/q'),
             ('b/12')) V (YourString)
     CROSS APPLY (VALUES (NULLIF(CHARINDEX('/', V.YourString), 0) - 1)) CI (I); --NULLIF incase of lack of /

上面returns下面:

ExtractString
-----
11/7
9
5/q
/12

请注意,最后一个值 returns '/12' 作为 'b' 无法转换为 int