488 Stimmen

Wie fügt man einen Wert ein, der ein Apostroph (einfaches Anführungszeichen) enthält?

Wie lautet die korrekte SQL-Syntax, um einen Wert mit einem Apostroph einzufügen?

Insert into Person
  (First, Last)
Values
  'Joe',
  'O'Brien'

Ich erhalte immer wieder eine Fehlermeldung, da ich denke, dass das Apostroph nach dem O die Endmarkierung für den Wert ist.

724voto

Paul Sasik Punkte 76202

Entfernen Sie das Apostroph (d.h. verdoppeln Sie das einfache Anführungszeichen) in Ihrem SQL:

INSERT INTO Person
    (First, Last)
VALUES
    ('Joe', 'O''Brien')
              /\
          right here  

Dasselbe gilt für SELECT-Abfragen:

SELECT First, Last FROM Person WHERE Last = 'O''Brien'

Das Apostroph oder einfache Anführungszeichen ist ein Sonderzeichen in SQL, das den Anfang und das Ende von Zeichenketten angibt. Das bedeutet, dass Sie es als Teil Ihrer literalen Zeichenkettendaten verwenden können, wenn Sie escape das Sonderzeichen. Bei einem einfachen Anführungszeichen wird dies in der Regel durch Verdoppelung des Anführungszeichens erreicht. (Zwei einfache Anführungszeichen, nicht doppeltes Anführungszeichen anstelle eines einfachen Anführungszeichens).

Hinweis : Sie sollten sich über dieses Problem nur Gedanken machen, wenn Sie Daten manuell über eine Roh-SQL-Schnittstelle bearbeiten, da das Schreiben von Abfragen außerhalb der Entwicklung und des Testens nur selten vorkommen sollte. Im Code gibt es Techniken und Frameworks (abhängig von Ihrem Stack), die sich um das Escaping von Sonderzeichen kümmern, SQL-Einschleusung , usw.

60voto

Justin Niessner Punkte 235353

Sie müssen nur die einfachen Anführungszeichen verdoppeln...

insert into Person (First, Last)
values ('Joe', 'O''Brien')

39voto

David Hall Punkte 31726

Sie müssen das Apostroph weglassen. Unter T-SQL mit einem doppelten Hochkomma, so dass Ihr insert Aussage wird:

Insert into Person
(First, Last)
Values
'Joe', 'O''Brien'

23voto

OMG Ponies Punkte 312816

Da ein einfaches Anführungszeichen für den Anfang und das Ende einer Zeichenkette verwendet wird, müssen Sie es entschlüsseln.

Die kurze Antwort ist, zwei einfache Anführungszeichen zu verwenden - '' - damit eine SQL-Datenbank den Wert als ' .

Prüfen Sie die Verwendung von REPLACE, um eingehende Werte zu bereinigen:

Sie wollen prüfen, ob '''' und ersetzen sie, wenn sie in der Zeichenkette vorhanden sind, durch '''''' um das einsame einfache Anführungszeichen zu umgehen.

20voto

Max Pringle Punkte 531

Einfache Anführungszeichen werden durch Verdoppelung vermieden ,

Die folgende SQL veranschaulicht diese Funktionalität.

declare @person TABLE (
    [First] nvarchar(200),
    [Last] nvarchar(200)
)

insert into @person 
    (First, Last)
values
    ('Joe', 'O''Brien')

select * from @person

Ergebnisse

First   | Last
===================
Joe     | O'Brien

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