gpt4 book ai didi

tsql - 在 T-SQL 中将 CSV 字符串转换为表的最简洁方法?

转载 作者:行者123 更新时间:2023-12-04 09:04:42 24 4
gpt4 key购买 nike

-- Given a CSV string like this:

declare @roles varchar(800)
select @roles = 'Pub,RegUser,ServiceAdmin'

-- Question: How to get roles into a table view like this:

select 'Pub'
union
select 'RegUser'
union
select 'ServiceAdmin'

发布后,我开始玩一些动态 SQL。这似乎有效,但似乎使用动态 SQL 可能存在一些安全风险 - 对此有何想法?
declare @rolesSql varchar(800)
select @rolesSql = 'select ''' + replace(@roles, ',', ''' union select ''') + ''''
exec(@rolesSql)

最佳答案

查看我来自 here 的回答

但基本上你会:

在您的数据库中创建此函数:

CREATE FUNCTION dbo.Split(@origString varchar(max), @Delimiter char(1))     
returns @temptable TABLE (items varchar(max))
as
begin
declare @idx int
declare @split varchar(max)

select @idx = 1
if len(@origString )<1 or @origString is null return

while @idx!= 0
begin
set @idx = charindex(@Delimiter,@origString)
if @idx!=0
set @split= left(@origString,@idx - 1)
else
set @split= @origString

if(len(@split)>0)
insert into @temptable(Items) values(@split)

set @origString= right(@origString,len(@origString) - @idx)
if len(@origString) = 0 break
end
return
end

然后调用该函数并传入要拆分的字符串。
Select * From dbo.Split(@roles, ',')

关于tsql - 在 T-SQL 中将 CSV 字符串转换为表的最简洁方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3735152/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com