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

这篇博客探讨了如何在MySQL中处理不连续的数值列,通过创建和操作临时表,实现对不连续数值段的首尾数字提取。通过一系列的SQL语句,将不连续的值转换为连续段的表示。
摘要由CSDN通过智能技术生成

展开全部

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

二、如果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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值