it-swarm.com.de

Fügen Sie doppelte Anführungszeichen in die SQL-Ausgabe ein

Nachdem ich zum Beispiel eine Abfrage ausgeführt und die Ausgabe angesehen habe

select * from People

Meine Ausgabe ist wie folgt

First   Last      Email
Ray     Smith     [email protected]

Wie exportiere ich diese Daten so, dass sie wie folgt aussehen?

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

Oder gibt es eine Möglichkeit, dies in SQL zu tun, um Datensätze so zu ändern, dass sie Anführungszeichen enthalten?

Denn beim Exportieren werden die Kommas sowieso mit einbezogen, oder?

17
Ray

Wenn die Spalten, an denen Sie interessiert sind, 128 Zeichen oder weniger umfassen, können Sie die Funktion QUOTENAME verwenden. Seien Sie vorsichtig, da etwas mehr als 128 Zeichen NULL zurückgibt.

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

Dies ist die Art der Sache, die am besten im Code ausgeführt wird. Sie sollten jedoch nicht abfragen für Präsentation .

4
Blindy

wählen Sie concat ("\" ", zuerst"\"", "\" ", Last,"\"", "\" ", Email,"\"") als allInOne

2
MikeyKennethR

Das Ändern der Datensätze in Anführungszeichen würde zu einer Katastrophe führen. Sie verwenden die Daten nicht nur für den Export. Außerdem müssten Sie theoretisch mit Namen wie den folgenden umgehen:

 Thomas "The Alley Cat" O'Malley

was einige Probleme bereitet.

In Standard SQL würden Sie doppelte einfache Anführungszeichen verwenden, um einfache Anführungszeichen einzuschließen (ohne besondere Behandlung für doppelte Anführungszeichen):

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

Einige DBMS ermöglichen die Verwendung von Anführungszeichen in Strings (in Standard SQL geben die Anführungszeichen einen "begrenzten Bezeichner" an; SQL Server verwendet dazu eckige Klammern).

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

Normalerweise bieten Ihre Exporter-Tools jedoch eine CSV-Ausgabeformatierung, und Ihre SQL-Anweisung muss sich nicht darum kümmern. Eingebettete Anführungszeichen machen alles andere problematisch. In der Regel sollten Sie das DBMS nicht mit der Formatierung der Daten befassen.

1

Das hat für mich am besten funktioniert

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

Wenn Sie MS SQL Server verwenden, versuchen Sie Folgendes:

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

- Beachten Sie, dass die ersten 3 Zeichen zwischen "SELECT" und "||" sind:' "' 

- Die Zeichen sind nach "||" gleich am Ende ... so erhalten Sie auf jeder Seite ein "Wert".

0
Josh McCoy