La construction d'une liste séparée par des virgules de valeurs dans une instruction SQL Oracle
Je suis en train de construire une liste séparée par des virgules des valeurs d'un champ dans Oracle.
- Je trouver un exemple de code qui fait cela:
DECLARE @List VARCHAR(5000)
SELECT @List = COALESCE(@List + ', ' + Display, Display)
FROM TestTable
Order By Display
Mais quand j'ai essayer ce que j'ai toujours une erreur sur le mot clé from pas été prévu. Je peux utiliser SELECT INTO
et cela fonctionne, mais si j'ai plus d'une ligne-je obtenir la récupération d'erreur.
Pourquoi ne puis-je pas faire comme suit:
SELECT myVar = Field1
FROM myTable
- Si vous publiez du code XML ou des échantillons de données, veuillez mettre en évidence les lignes dans l'éditeur de texte et cliquez sur le "exemples de code de la touche" " (
{ }
) sur la barre d'outils editeur de bien format et la syntaxe en surbrillance! - double possible de Comment puis-je combiner plusieurs lignes dans une liste délimitée par des virgules dans Oracle?
Vous devez vous connecter pour publier un commentaire.
Dans Oracle, vous devez utiliser l'un des nombreux agrégation de chaîne techniques recueillis par Tim Hall sur cette page.
Si vous utilisez 11.2,
Dans les versions antérieures, ma préférence serait d'utiliser l'agrégat défini par l'utilisateur l'approche par la fonction (Tim est appelé
string_agg
) pour fairePeut-être essayer DBMS_UTILITY.COMMA_TO_TABLE et TABLE_TO_COMMA de split/join csv:
Vous ne pouvez pas insérer plusieurs valeurs en une seule variable, à moins que vous les concaténer en quelque sorte.
Pour obtenir une seule valeur (pas sûr de l'oracle de la syntaxe),
Sinon, pour concaténer les valeurs (encore une fois, pas sûr d'Oracle)