DECLARE @s nvarchar(4000) SET @s='a,b,c'-- 处理 SELECT @s=N'SELECT '''+REPLACE(@s,N',',N''' UNION ALL SELECT ''')+N'''' EXEC(@s)
先謝謝以上二位,剛沒有把問題完全講清楚 描述如下: 在table表中有一個字段name,值為'a,b,c'吧,我現在想通過 select name from table來取出這條記錄,但要求結果為'a','b','c'不知如何做到按照樓上vivianfdlpw()的方法: select replace('''a,b,c''',',',''',''') from table是可以得到結果為'a','b','c'但是換成select replace(name,',',''',''') from table得到的結果卻為a','b','c這問題沒能力解瘊了呀!各位大老幫個忙呀
转一个函数给你使用。 因查询统计需要,今天早上在SQLSERVER里写了一个类似于Split的函数,如下create function f_split(@SourceSql varchar(8000),@StrSeprate varchar(10)) returns @temp table(a varchar(100)) --实现split功能 的函数 --date :2005-4-20 --Author :Domino as begin declare @i int set @SourceSql=rtrim(ltrim(@SourceSql)) set @i=charindex(@StrSeprate,@SourceSql) while @i>=1 begin insert @temp values(left(@SourceSql,@i-1)) set @SourceSql=substring(@SourceSql,@i+1,len(@SourceSql)-@i) set @i=charindex(@StrSeprate,@SourceSql) end if @SourceSql<>'\' insert @temp values(@SourceSql) return end 用法:select * from dbo.f_split('A:B:C:D:E',':') 作者Blog:http://blog.csdn.net/great_domino/
SET @s='a,b,c'-- 处理
SELECT @s=N'SELECT '''+REPLACE(@s,N',',N''' UNION ALL SELECT ''')+N''''
EXEC(@s)
描述如下:
在table表中有一個字段name,值為'a,b,c'吧,我現在想通過
select name from table來取出這條記錄,但要求結果為'a','b','c'不知如何做到按照樓上vivianfdlpw()的方法:
select replace('''a,b,c''',',',''',''') from table是可以得到結果為'a','b','c'但是換成select replace(name,',',''',''') from table得到的結果卻為a','b','c這問題沒能力解瘊了呀!各位大老幫個忙呀
因查询统计需要,今天早上在SQLSERVER里写了一个类似于Split的函数,如下create function f_split(@SourceSql varchar(8000),@StrSeprate varchar(10))
returns @temp table(a varchar(100))
--实现split功能 的函数
--date :2005-4-20
--Author :Domino
as
begin
declare @i int
set @SourceSql=rtrim(ltrim(@SourceSql))
set @i=charindex(@StrSeprate,@SourceSql)
while @i>=1
begin
insert @temp values(left(@SourceSql,@i-1))
set @SourceSql=substring(@SourceSql,@i+1,len(@SourceSql)-@i)
set @i=charindex(@StrSeprate,@SourceSql)
end
if @SourceSql<>'\'
insert @temp values(@SourceSql)
return
end
用法:select * from dbo.f_split('A:B:C:D:E',':')
作者Blog:http://blog.csdn.net/great_domino/