mysql固定某列获取不连续的值_SQL-怎么把一列不规律的值,取出其中连续段的首尾数字?...

展开全部

一、反问题主:最终汇总结果,是否是根据个位、十位、百位来合计显示的?

二、如果32313133353236313431303231363533e59b9ee7ad9431333433626437以上答案成立,则解析如下:

1、创建临时表@T,并填充示例数据

2、创建临时表@T1,用作临时表。

两列数据:几位数、示例数据

3、创建临时表@T3,用作临时表

一列数据:当前位数的示例数据

循环当前当前位数,拼成当前位数的字符串数据,用以插入@T2

4、创建临时表@T2,储存最终结果

三、代码如下:

1、创建临时表DECLARE @T TABLE ([VALUE] INT)

INSERT INTO @T([VALUE])

SELECT 4

UNION

SELECT 5

UNION

SELECT 6

UNION

SELECT 80

UNION

SELECT 81

UNION

SELECT 82

UNION

SELECT 100

UNION

SELECT 101

2、创建临时表@T1DECLARE @T1 TABLE ([LEN] INT,[VALUE] INT)

INSERT INTO @T1([LEN],[VALUE])

SELECT LEN([VALUE]) AS [LEN],[VALUE]

FROM @T

ORDER BY LEN([VALUE]),[VALUE]

3、向临时表@T3、@T2插入数据DECLARE @MIN INT

DECLARE @MAX INT

SELECT @MIN = MIN([LEN]),@MAX = MAX([LEN]) FROM @T1

DECLARE @T2 TABLE([VALUES] VARCHAR(MAX))

DECLARE @T3 TABLE(ID INT IDENTITY(1,1),[VALUE] INT)

WHILE(@MIN <= @MAX)

BEGIN

INSERT INTO @T3([VALUE])

SELECT [VALUE] FROM @T1 WHERE @MIN = [LEN] ORDER BY [VALUE]

DECLARE @ID INT

DECLARE @COUNT INT

DECLARE @STR VARCHAR(50)

SELECT @STR = ''

SELECT @ID = MIN(ID),@COUNT = MAX(ID) FROM @T3

WHILE(@ID <= @COUNT)

BEGIN

SELECT @STR = @STR + CONVERT(VARCHAR(10),[VALUE])+'|' FROM @T3 WHERE ID = @ID

SET @ID = @ID + 1

--SELECT * FROM @T3

END

INSERT INTO @T2([VALUES]) VALUES (@STR)

DELETE @T3

SELECT @MIN = @MIN + 1,@STR = ''

END

4、显示最终结果SELECT SUBSTRING([VALUES],1,LEN([VALUES])-1) FROM @T2

你可能感兴趣的:(mysql固定某列获取不连续的值_SQL-怎么把一列不规律的值,取出其中连续段的首尾数字?...)