Ich hatte das gleiche Problem, aber meins basierte nicht auf statischen Daten im SQL-Code selbst, sondern auf Werten in den Daten.
Dieser Code listet alle Spaltennamen und Datentypen in meiner Datenbank auf:
SELECT DISTINCT QUOTENAME(COLUMN_NAME),DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS
Aber einige Spaltennamen haben tatsächlich ein einfaches Anführungszeichen in den Namen der Spalte eingebettet, wie z. B. ...
[MyTable].[LEOS'DATACOLUMN]
Um diese zu verarbeiten, musste ich die REPLACE-Funktion zusammen mit der vorgeschlagenen QUOTED_IDENTIFIER-Einstellung verwenden. Andernfalls würde es zu einem Syntaxfehler kommen, wenn die Spalte in einem dynamischen SQL verwendet wird.
SET QUOTED_IDENTIFIER OFF;
SET @sql = 'SELECT DISTINCT ''' + @TableName + ''',''' + REPLACE(@ColumnName,"'","''") + ...etc
SET QUOTED_IDENTIFIER ON;
51 Stimmen
"Es gab einige Fehler" - Was waren das für Fehler?
2 Stimmen
Ja, denn der richtige Weg, einfache Anführungszeichen in MSSQL einzufügen, ist, sie zu verdoppeln. Das Beispiel, das Sie uns zeigen, sollte funktionieren. Wie haben Sie diese SQL-Abfrage erstellt, mit welcher Sprache? Oder in SQL Server Management Studio?
1 Stimmen
Mögliches Duplikat von Ersetzen einfacher Anführungszeichen in SQL Server .