Je ne trouve pas de moyen de le faire et à cause de certaines restrictions, il doit être codé sans l'utilisation de variables, mais je peux appeler une fonction. Quoi qu'il en soit, je dois renvoyer un jeu de résultats à partir d'une requête Select et l'une des lignes est une chaîne délimitée par un tuyau.Chaîne délimitée par l'analyse SQL
Ainsi, il retournera quelque chose comme:
id| Name | Message |
---------------------
1 | Some Name | 'Here is my | delimited | message'
Et je besoin d'être
id| Name | Message1 | Message2 | Message3
------------------------------------------------------
1 | Some Name | 'Here is my' | 'delimited' | 'message'
Je pensais à quelque chose comme Parsename('','|',1)
, où vous pouvez passer dans le séparateur au lieu de toujours être une période mais je ne connais pas la meilleure façon d'y parvenir.
EDIT: J'ai essayé des variantes de ceci mais bien sûr c'est très déroutant. Il pourrait y avoir 4 ou plus |
SELECT Field1,
Field2 AS Originalvalue,
--1
SUBSTRING(Field2,0,CHARINDEX('|',Field2)) AS Msg1,
--2
LEFT(SUBSTRING(Field2,CHARINDEX('|',Field2)+1 ,LEN(Field2)),CHARINDEX('|',SUBSTRING(Field2,CHARINDEX('|',Field2)+1 ,LEN(Field2)))-1)
AS ExtractedValue
FROM Table1 T1 JOIN Table2 T2
ON T1.Id = T2.Id
WHERE T1.Id = 12
Pourquoi les gens [continuer à faire ce] (http://stackoverflow.com/search?q=sql+delimited) ?! – Phil
les champs délimités par des canalisations font mourir les fées SQL – scrappedcola
Hmm, est-ce que les gens ne répondent pas aux questions sur ce site? Il semble y avoir beaucoup de 'allez regarder google'. Je cherche depuis plus d'une heure et je n'ai pas trouvé exactement ce que je cherchais. – user204588