it-swarm.com.de

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

Was ist die richtige SQL-Syntax, um einen Wert mit einem Apostroph darin einzufügen?

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

Ich bekomme immer eine Fehlermeldung, da ich denke, dass der Apostroph nach dem O das letzte Tag für den Wert ist.

255
leora

Flucht vor dem Apostroph (d. H. Das einfache Anführungszeichen) in Ihrer SQL: 

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

Gleiches gilt für SELECT-Abfragen:

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

Der Apostroph oder einfaches Anführungszeichen ist ein Sonderzeichen in SQL, das den Anfang und das Ende von Zeichenfolgendaten angibt. Dies bedeutet, dass Sie zur Verwendung als Teil Ihrer Literal-String-Daten escape das Sonderzeichen verwenden müssen. Bei einem einfachen Angebot wird dies normalerweise durch eine Verdoppelung Ihres Angebots erreicht. (Zwei einfache Anführungszeichen, kein Anführungszeichen anstelle eines einzelnen Anführungszeichens.) 

Note: Sie sollten sich immer nur über dieses Problem Gedanken machen, wenn Sie Daten manuell über eine Raw-SQL-Schnittstelle bearbeiten, da das Schreiben von Abfragen außerhalb der Entwicklung und des Testens selten vorkommt. Im Code gibt es Techniken und Frameworks (abhängig von Ihrem Stack), mit denen Sonderzeichen, SQL-Injection usw. vermieden werden.

393
Paul Sasik

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

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

Du musst dem Apostroph entkommen. In T-SQL ist dies mit einem doppelten Apostroph, also wird Ihre insert-Anweisung zu:

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

Weil ein einfaches Anführungszeichen für den Beginn und das Ende einer Zeichenfolge verwendet wird. Du musst dem entkommen.

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

Sehen Sie sich REPLACE an, um ankommende Werte zu bereinigen:

Sie möchten nach '''' suchen und sie durch '''''' ersetzen, wenn sie in der Zeichenfolge vorhanden sind, um das einzelne Anführungszeichen zu umgehen.

13
OMG Ponies

Das Apostrophzeichen kann eingefügt werden, indem die Funktion CHAR mit dem ASCII - Tabellensuchwert [39] des Apostroph aufgerufen wird. Die Zeichenfolgenwerte können dann zusammen mit einem concatenate-Operator .

Insert into Person
  (First, Last)
Values
  'Joe',
  concat('O',char(39),'Brien')
3
Nathan

eduffy hatte eine gute Idee . Er hat es gerade in seinem Codebeispiel zurückbekommen. Entweder in JavaScript oder in SQLite können Sie den Apostroph durch das Akzentzeichen ersetzen.

Er (versehentlich bin ich sicher) setzte das Akzentzeichen als Trennzeichen für die Zeichenfolge, anstatt den Apostroph in O'Brian zu ersetzen. Dies ist in der Tat eine äußerst einfache Lösung für die meisten Fälle.

3
Robert Sherman

verwenden Sie doppelte Anführungszeichen um die Werte.

insert into Person (First, Last) Values("Joe","O'Brien")
1
run_time_error

Einfache Anführungszeichen werden durch Verdopplung ersetzt, 

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
0
Max Pringle