如何解析sql中的字符串?

时间:2009-11-26 19:31:35

标签: tsql

我在存储过程(sql Server 2000)中传递一个字符串,如“123456788997877”(请注意我没有分隔管道等...)

我需要对字符串中的每个数字进行一些计算。

如何循环给定字符串中的每个数字并对其执行某些操作?

非常感谢

4 个答案:

答案 0 :(得分:3)

您可以尝试这样的事情

DECLARE @String VARCHAR(MAX)

SELECT @String = '123456788997877'

DECLARE @Pos INT

SELECT @Pos = 1

WHILE @Pos < LEN(@String)
BEGIN
    DECLARE @Current VARCHAR(1)
    SET @Current = SUBSTRING(@String, @Pos, 1)
    PRINT @Current
    SET @Pos = @Pos + 1
END

ALS SqlServer 2008允许

SET @Pos += 1

答案 1 :(得分:2)

您甚至可以使用数字表格

declare @str varchar(100)
set @str = '123456788997877'

--Build a number table
declare @tblNumber table(num int)
insert into @tblNumber values(1)
insert into @tblNumber values(2)
insert into @tblNumber values(3)
insert into @tblNumber values(4)
insert into @tblNumber values(5)
insert into @tblNumber values(6)
insert into @tblNumber values(7)
insert into @tblNumber values(8)
insert into @tblNumber values(9)
insert into @tblNumber values(10)
insert into @tblNumber values(11)
insert into @tblNumber values(12)
insert into @tblNumber values(13)
insert into @tblNumber values(14)
insert into @tblNumber values(15)

select IndiChars = substring(@str,num,1) from @tblNumber

<强> IndiChars

1
2
3
4
5
6
7
8
8
9
9
7
8
7
7

答案 2 :(得分:1)

您可能会发现Split A String By Using A Number Table有用。

答案 3 :(得分:0)

您在TSQL中有字符串函数。使用它们来剪切字符串,使用转换来解析你想要的任何部分。