sql >> Database teknologi >  >> RDS >> Sqlserver

sql server opdeler kommaseparerede værdier i kolonner

Løs dette problem dynamisk, brug DSQL til at tilføje flere kolonner i resultatet i overensstemmelse hermed.

--create split function CREATE FUNCTION [dbo].[SO_Split] ( @List nvarchar(2000), @SplitOn nvarchar(5) ) RETURNS @RtnValue table ( Id int identity(1,1), Value nvarchar(100) ) AS BEGIN While (Charindex(@SplitOn,@List)>0) Begin Insert Into @RtnValue (value) Select Value = ltrim(rtrim(Substring(@List,1,Charindex(@SplitOn,@List)-1))) Set @List =Substring(@List,Charindex(@SplitOn,@List)+len(@SplitOn),len(@List)) End Insert Into @RtnValue (Value) Select Value = ltrim(rtrim(@List)) Return END --below is the dynamic solution for this problem declare @sql nvarchar(3000) = 'select *' declare @cnt int = 1 declare @rowNum int = (select max(a) from (select(select max(id) as id_max from dbo.so_split(mul_query,'*')) as a from #test) as b) while(@cnt <= @rowNum) begin set @sql = @sql + N', ISNULL((select value from dbo.so_split(mul_query,''*'') where id = '+cast(@cnt as nvarchar(5))+N'),''1'')' set @cnt = @cnt + 1 end set @sql = @sql + N' from #test' exec sp_executesql @sql

Resultatet er vedhæftet nedenfor.



  1. Timeout på rådgivende låse i postgresql

  2. Kategorititler på flere sprog i Mysql-databasen

  3. MySQL-fejlhjælp:Ukendt kolonne i On-klausul

  4. Bruger du Like på en parametervariabel?