sql >> Database >  >> RDS >> Sqlserver

sql server splitst door komma's gescheiden waarden in kolommen

Los dit probleem dynamisch op, gebruik DSQL om overeenkomstig meer kolommen aan het resultaat toe te voegen.

--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

Het resultaat is hieronder bijgevoegd.



  1. Nadat de login-knop is ingedrukt, hoe de waarde van Tkinter-invoer te verkrijgen en deze door te geven aan de SQL-query?

  2. Voorbeeld van sys.dm_sql_referenced_entities() van SQL Server die een entiteit retourneert die verwijst naar een gekoppelde server

  3. Waarom gebruikt MySQL latin1_swedish_ci als standaard?

  4. MYSQL group_concat equivalent in Sybase ASE?