web-dev-qa-db-fra.com

Insérer des guillemets dans la sortie SQL

Après avoir lancé une requête et visionné le résultat, par exemple

select * from People

Ma sortie est comme suit

First   Last      Email
Ray     Smith     [email protected]

Comment pourrais-je exporter ces données afin qu'elles se présentent comme suit?

"Ray","Smith","[email protected]"

Ou existe-t-il un moyen de le faire dans SQL pour modifier les enregistrements afin qu'ils contiennent des guillemets?

Parce que quand vous exportez, cela inclut les virgules de toute façon, non?

17
Ray

Si les colonnes qui vous intéressent ont 128 caractères ou moins, vous pouvez utiliser la fonction QUOTENAME . Soyez prudent avec ceci car tout ce qui dépasse 128 caractères retournera NULL.

SELECT QUOTENAME(First, '"'), QUOTENAME(Last, '"'), QUOTENAME(Email, '"')
    FROM People
21
Joe Stefanelli
select '"'+first+'","'+last+'","'+email+'"'
from people

C’est le genre de chose la mieux faite dans le code, cependant, vous ne devriez pas query for presentation .

4
Blindy

sélectionnez concat ("\" ", d'abord,"\"", "\" ", dernier,"\"", "\" ", Email,"\"") comme toutInOne

2
MikeyKennethR

La modification des enregistrements pour contenir des guillemets serait un désastre; vous n'utilisez pas les données uniquement pour l'exportation. De plus, en théorie, vous auriez à traiter avec des noms tels que:

 Thomas "The Alley Cat" O'Malley

ce qui pose quelques problèmes.

En SQL standard, vous utiliseriez des guillemets simples doublés pour entourer des guillemets simples (sans traitement spécial pour les guillemets doubles):

'"Thomas "The Alley Cat" O''Malley"'

Certains SGBD vous permettent d'utiliser des guillemets doubles autour des chaînes (dans SQL standard, les guillemets indiquent un "identificateur délimité"; SQL Server utilise des crochets pour cela), auquel cas vous pouvez écrire la chaîne comme suit:

"""Thomas ""The Alley Cat"" O'Malley"""

Normalement, vos outils d’exportateur fournissent le formatage de sortie CSV et votre instruction SQL n’a pas à s’inquiéter. Les citations incorporées rendent tout autre problème. En effet, vous ne devriez généralement pas laisser le SGBD gérer le formatage des données.

1
Jonathan Leffler

Cela a fonctionné mieux pour moi

SELECT 'UPDATE [dbo].[DirTree1] SET FLD2UPDATE=',QUOTENAME(FLD2UPDATE,'''')
+' WHERE KEYFLD='+QUOTENAME(KEYFLD,'''')
FROM [dbo].[Table1]
WHERE SUBSTRING(FLD2UPDATE,1,2) = 'MX'
order by 2
0
Badly-Bent

Si vous utilisez MS SQL Server, essayez l'une des solutions suivantes:

SELECT '"'||Table.Column||'"'
  FROM Table

- Notez que les 3 premiers caractères entre "SELECT" et "||" sont:' "' 

- Les caractères sont les mêmes après "||" à la fin ... de cette façon, vous obtenez un "de chaque côté de votre valeur.

0
Josh McCoy