Voici une fonction scindée, elle peut s’appliquer comme dbo.Split('sf,we,fs,we',',')
, lorsque je change la chaîne en nom de colonne, cela ne fonctionne pas, comme dbo.Split(table.columnName,',')
.
Select * from dbo.Split('[email protected]','@')
ça marche 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] (@Ssortingng 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(@Ssortingng)0) insert into @temptable(Items) values(@slice) set @Ssortingng = right(@Ssortingng,len(@Ssortingng) - @idx) if len(@Ssortingng) = 0 break end return end
auquel il est fait référence: Colonne séparée par des virgules divisées SQL 2005 sur un délimiteur
Ou quelqu’un peut me donner une fonction similaire qui peut diviser une colonne en deux
En effet, la fonction renvoie un TABLE.
SELECT Split(myColumn) FROM myTable
signifiera
SELECT myOutputTableFromSplit FROM myTable
Cela signifie que renvoyer une table à partir de la table et que SQL ne peut pas le faire.