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?
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
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 .
sélectionnez concat ("\" ", d'abord,"\"", "\" ", dernier,"\"", "\" ", Email,"\"") comme toutInOne
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.
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
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.