Voici une fonction fractionnée, elle peut s'appliquer en tant que dbo.Split('sf,we,fs,we',',')
, lorsque je change la chaîne en nom de colonne, cela ne fonctionne pas, par exemple dbo.Split(table.columnName,',')
.Colonne séparée par des virgules séparées par des données SQL sur le délimiteur
Select * from dbo.Split('[email protected]','@')
est des œuvres mais
Select * from dbo.Split((Select Email from Users),'@')
a un message d'erreur:
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near '('.
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near ','
La fonction est ici:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[Split] (@String varchar(8000), @Delimiter char(1))
returns @temptable TABLE (items varchar(8000))
as
begin
declare @idx int
declare @slice varchar(8000)
select @idx = 1
if len(@String)<1 or @String is null return
while @idx!= 0
begin
set @idx = charindex(@Delimiter,@String)
if @idx!=0
set @slice = left(@String,@idx - 1)
else
set @slice = @String
if(len(@slice)>0)
insert into @temptable(Items) values(@slice)
set @String = right(@String,len(@String) - @idx)
if len(@String) = 0 break
end
return
end
dont il est refered à: SQL 2005 Split Comma Separated Column on Delimiter
Ou quelqu'un peut me donner une fonction similaire qui peut diviser une colonne en deux
Pourriez-vous élaborer sur la partie "ça ne marche pas"? –
La fonction fonctionne sur une valeur varchar, pas sur une colonne. Cette valeur pourrait provenir d'une colonne, bien sûr. Vous utilisez ceci pour normaliser les données CSV dans les multiples colonnes qu'il aurait dû stocker depuis le début, non? – 48klocs