2010-12-28 3 views
1

Ich versuche, die Erstellung der INSERT SQL für Daten in einer Tabelle Skript. (Ähnlich den SQL Server in Skripten gebaut)Wie schalte ich einfache Anführungszeichen in doppelten Anführungszeichen bei der Ausgabe von T-SQL um SELECT-Anweisung

DECLARE @HEADER varchar(255) 

SET @HEADER = 'insert into Table (Column1 , Column2) 
values (N''' 

SELECT 
@Header + Column1 + ''', N''' + Column2 + ''')' 
+ CHAR(10) 
FROM Table 
ORDER BY Column1 

In Column1 habe ich Text, einfache Anführungszeichen enthält und ich brauche es als Doppel-Single zitierten Text zu kommen, wie es funktioniert, wenn „Skripts generieren“ direkt aus SQL Server.

Antwort

4

Verwenden Sie die Funktion REPLACE, um Ihre Anführungszeichen zu verdoppeln, und Sie müssen die resultierende Zeichenfolge in Anführungszeichen setzen. Beachten Sie, dass dies für NOT NULL Spalten funktioniert, also optimieren Sie es, wenn Sie Spalten mit NULL-Unterstützung unterstützen müssen.

SELECT 
    'INSERT INTO Table (Column1, Column2) VALUES (N''' + 
    REPLACE(Column1, '''', '''''') + ''', N''' + 
    REPLACE(Column2, '''', '''''') + ''')' 
FROM Table 
ORDER BY Column1 
+0

QuoteName würde für mich funktionieren ABER Column1 = nvarchar (2000) und QUOTENAME ist auf nvarchar (258) –

+0

begrenzt @Chris: Danke für die Klarstellung. Überprüfen Sie die überarbeitete Lösung mit 'REPLACE'. –

+1

Perfekt danke! –

2

Sie können die QUOTENAME-Funktion verwenden.

SELECT 
@Header + QUOTENAME(Column1) + ''', N''' + Column2 + ''')' 
+ CHAR(10) 
FROM Table 
ORDER BY Column1 
0

Ich vermute, dass Sie ein Einfügeskript basierend auf einer vorhandenen Tabelle generieren möchten?

Ich würde Ihnen empfehlen, SSMS Tools herunterladen. Es ist eine großartige Ergänzung mit zusätzlichen Funktionen für die Verwendung mit SSMS. Mit einer dieser Funktionen können Sie mit der rechten Maustaste auf eine Tabelle klicken und ein Einfügeskript für Sie generieren, das die Daten in der Tabelle enthält.

+0

SSMS funktioniert gut, aber ich muss Post die Ausgabe erheblich zu einem Client-Format zu schreiben Ich versuche, die SSMS-Ausgabe auf eine Weise neu zu erstellen, die ich nicht am globalen ersetzen auf dem generierten Skript. Wie alles muss Kleinbuchstaben für die SQL haben, muss ich den Zeilenumbruch vor dem Einfügen hinzufügen, die Standard-Klammern um die Spaltennamen müssen entfernt werden usw. ... –