Je cherche toute la matinée pour cela.
Ma connaissance du serveur SQL n'est pas excellente, et je suis hors de réponses. P>
Exemples concrets sont: J'ai besoin de diviser ces exemples en J'ai compris ce petit morceau de code, mais il bascule Part1 et Part2 si la chaîne contient un "-" . P> City-of -Style code> ou Part1-part2 code>. P> City code> et de style code > et part1 code> et Part2 code>. p> PARSENAME(REPLACE('sample-string', '-', '.'), 1))
4 Réponses :
S'il n'y a pas de tirets dans la chaîne, vous obtenez un blanc. L'extrait ci-dessous vous donne la première partie s'il y a un tiret, sinon la chaîne entière.
DECLARE @TextIn VARCHAR(50)= 'City-Of-Style'
DECLARE @TextOut VARCHAR(500)
SELECT CASE WHEN CHARINDEX('-',@TextIn)>0 THEN SUBSTRING(@TextIn,0,CHARINDEX('-',@TextIn,0)) ELSE @TextIn END
en SQL, vous pouvez utiliser la fonction E.g. Entrée: King-Adfad-Adfadd split_part code>. p>
Cast (Split_Part (colonne, '-', 1) comme texte) comme nouveau_column code> p> p>
Sortie: roi p>
SQL Server V14 Split_Part n'est pas disponible. "Pas une fonction intégrée"
Construire sur les réponses précédentes, j'offre une solution - qui fournit à la fois les premiers et les derniers éléments. Si leur n'est pas un délimiteur trouvé, le dernier élément est vide.
DECLARE @del nvarchar(1) = '-', @firstPart nvarchar(100), @lastPart nvarchar(100), @TextIn nvarchar(20) = 'City-Of-Style' SELECT @firstPart = (CASE WHEN CHARINDEX(@del,@TextIn)>0 THEN SUBSTRING(@TextIn,0,CHARINDEX(@del,@TextIn,0)) ELSE @TextIn END), @lastPart = (CASE WHEN CHARINDEX(@del,@TextIn)>0 THEN SUBSTRING(@TextIn,CHARINDEX(@del,@TextIn,0)+1,LEN(@TextIn)) ELSE '' END) select @firstPart, @lastPart