1361 Stimmen

Wie kann ich ein einfaches Anführungszeichen in SQL Server ausblenden?

Ich versuche, die insert einige Textdaten in eine Tabelle in SQL Server 9.

Der Text enthält ein einzelnes Zitat ' .

Wie kann ich dem entgehen?

Ich habe versucht, zwei einfache Anführungszeichen zu verwenden, aber das hat mir einige Fehler eingebracht.

z. B. insert into my_table values('hi, my name''s tim.');

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

0voto

Dave Kelly Punkte 129

Dies sollte funktionieren

DECLARE @singleQuote CHAR 
SET @singleQuote =  CHAR(39)

insert into my_table values('hi, my name'+ @singleQuote +'s tim.')

0voto

Fandango68 Punkte 3911

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;

-2voto

Craig - MSFT Punkte 570

El STRING_ESCAPE Funktion kann auf neueren Versionen von SQL Server verwendet werden

6 Stimmen

In der Dokumentation heißt es dazu: "Derzeit kann STRING_ESCAPE nur JSON-Sonderzeichen entschlüsseln"

0 Stimmen

Und sie kann nicht zur Flucht aus dem '

-4voto

Chris Enitan Punkte 39

So sollte es funktionieren: Verwenden Sie einen umgekehrten Schrägstrich und setzen Sie ein doppeltes Anführungszeichen

"UPDATE my_table SET row =\"hi, my name's tim.\";

0 Stimmen

Wie meinen Sie das? Sie sagen, dass PRINT \"hi, my name's tim.\"; in SSMS funktionieren wird? Es funktioniert überhaupt nicht und niemand hat jemals gesagt, dass es funktioniert.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X