SQL Server 字符串拼接、读取
一、查询结果使用,字符串拼接
1 2 3 4 5 6 7 8 9 10 | declare @names nvarchar(1000) declare @ParmDefinition nvarchar(1000) declare @sqltext nvarchar(500) set @sqltext=N 'Select @names=isnull(@names + ' ',' ' , ' '' ' ) + isnull(列名, ' '' ' ) From 表名' set @ParmDefinition = N '@names nvarchar(1000) OUTPUT' ; exec sp_executesql @sqltext, @ParmDefinition, @names=@names OUTPUT select @names as Res |
二、SQL函数 获取“,”字符串长度
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | Create function [dbo].[GetSplitLength] ( @String nvarchar( max ), --要分割的字符串 @Split nvarchar(10) --分隔符号 ) returns int as begin declare @location int declare @start int declare @length int set @String=ltrim(rtrim(@String)) set @location=charindex(@split,@String) set @length=1 while @location<>0 begin set @start=@location+1 set @location=charindex(@split,@String,@start) set @length=@length+1 end return @length end |
三、SQL函数 遍历“,”拼接的字符串
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | create function [dbo].[GetSplitOfIndex] ( @String nvarchar( max ), --要分割的字符串 @split nvarchar(10), --分隔符号 @ index int --取第几个元素 ) returns nvarchar(1024) as begin declare @location int declare @start int declare @ next int declare @seed int set @String=ltrim(rtrim(@String)) set @start=1 set @ next =1 set @seed=len(@split) set @location=charindex(@split,@String) while @location<>0 and @ index >@ next begin set @start=@location+@seed set @location=charindex(@split,@String,@start) set @ next =@ next +1 end if @location =0 select @location =len(@String)+1 return substring (@String,@start,@location-@start) end |
四、FOR XML PATH 使用
1 | SELECT 列名+ ',' FROM 表名 FOR XML PATH( '' ) |
https://www.cnblogs.com/doubleliang/archive/2011/07/06/2098775.html
五、IN 参数查询
create function [dbo].[f_split](@c varchar(2000),@split varchar(2)) returns @t table(col varchar(20)) as begin while(charindex(@split,@c)<>0) begin insert @t(col) values (substring(@c,1,charindex(@split,@c)-1)) set @c = stuff(@c,1,charindex(@split,@c),'') end insert @t(col) values (@c) return end
这样就可以直接使用IN来查询了 查询语句如下:
select schoolname from school_info where code in(select col from [dbo].[f_split](@area,','))
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述