我可以这样增加数字:
SELECT SUBSTRING('0/0', 1,1) +1 AS ExtractString;
但是我需要它返回整数,并且每次只递增第一个数字。
此可能有点过于复杂,但是,我持“悲观”观点,认为可能存在不良数据。使用标量值,可以正常工作:
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 /
以上返回以下内容:
ExtractString
-----
11/7
9
5/q
/12
注意,最后一个值返回'/12'
,因为'b'
无法转换为int
。