我这里有一个简短的问题。
我有这样的价值
1/11
11/1
11/11
111/1
111/11
我正在尝试将这些值分开并将它们放入数字变量中。
比方说,我有numericvar1
和numericvar2
因此,第一个字符串numericvar1
将包含1,而numericvar2
将包含11
等等。
我试过这样的
SET @numericvar1= LEFT(@StrNumHolder, PATINDEX('%[0-9][^0-9]%', @StrNumHolder ))
SET @numericvar2= REPLACE(RIGHT(@StrNumHolder, PATINDEX('%[0-9][^0-9]%', @StrNumHolder )),'/','')
在此代码中如果/
之前的第一个数字是2位数,我得到了正确的输出。但如果第一个数字是1位数而下一个数字是2位数,如1/11
,则输出错误。像这样var1 = 1
和var2 = 1
我的代码出了什么问题?还是不可能?请帮帮我。
答案 0 :(得分:1)
您可以使用CHARINDEX获取'/'的位置,然后使用SUBSTRING分隔数字。在这里您可以如何查询它:
DECLARE @nIndex INT
SELECT @nIndex = CHARINDEX('/',@StrNumHolder)
SET @numericvar1 = SELECT SUBSTRING(@StrNumHolder,1,@nIndex-1)
SET @numericvar2 = SELECT SUBSTRING(@StrNumHolder,@nIndex+1,LEN(@StrNumHolder))
答案 1 :(得分:0)
你能尝试这样的事吗?
DECLARE @STRNUMHOLDER VARCHAR(20)
SET @STRNUMHOLDER='111/1'
DECLARE @pos INT
SET @pos = CHARINDEX('/', @STRNUMHOLDER)
SELECT @STRNUMHOLDER AS ORIG, LEFT(@STRNUMHOLDER, @pos-1) AS NUM1, SUBSTRING(@STRNUMHOLDER, @pos+1,99) AS NUM2