MSSQLSERVER数据库- 字符串分割函数返回类型表
遇到这样一个问题,存储在数据库的数据是一串字符串如:1,2,3,4,5,6。想把这串字符串进行转变成一个表格,如下:
1 |
2 |
3 |
4 |
5 |
6 |
就是这样一个问题,有人同事,写了一个这样的封装函数,这样就方便多了,使用方法如下:
DECLARE @IdString nvarchar(max) Select @IdString=FMenu from dbo.T_Groups where Fgroupsid=1 DECLARE @tTable TABLE ( tId int ) INSERT @tTable ( tId ) select Item from dbo.Func_Splitstring(@IdString,',')
字符串分割函数:
set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go ALTER FUNCTION [dbo].[Func_Splitstring] ( @IdList NVARCHAR(MAX),--传进来的Id列表 @split VARCHAR(10) --分隔符号 ) --返回的临时表@table,以及字段Item RETURNS @table TABLE ( Item INT ) AS BEGIN DECLARE @i INT DECLARE @j INT SET @i = 1 SET @j = 1 WHILE(@i > 0) BEGIN SET @i = CHARINDEX(@split, @IdList, @j) IF(@i>0) BEGIN INSERT @table ( Item ) VALUES ( SUBSTRING(@IdList, @j, @i - @j)) END ELSE BEGIN INSERT @table ( Item ) VALUES (SUBSTRING(@IdList, @j, LEN(@IdList) - @j + 1)) END SET @j = @i + 1 END RETURN END
附:
CHARINDEX 函数
返回字符或者字符串在另一个字符串中的起始位置。
CHARINDEX 函数调用方法如下:
CHARINDEX ( expression1 , expression2 [ , start_location ] )
Expression1 是要到 expression2 中寻找的字符中,start_location 是 CHARINDEX 函数开始在 expression2 中找expression1 的位置。
CHARINDEX 函数返回一个整数,返回的整数是要找的字符串在被找的字符串中的位置。假如 CHARINDEX 没有找到要找的字符串,那么函数整数“0”。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具