SQLite
 sql >> Datenbank >  >> RDS >> SQLite

Wie SQLite Quote() funktioniert

Das SQLite quote() Mit der Funktion können Sie eine Zeichenfolge mit Escapezeichen versehen, sodass sie für die Aufnahme in eine SQL-Anweisung geeignet ist.

Zeichenfolgen werden von einfachen Anführungszeichen mit Escapezeichen in inneren Anführungszeichen umgeben.

BLOBs werden als hexadezimale Literale codiert.

Beachten Sie, dass Zeichenfolgen mit eingebetteten NUL-Zeichen in SQL nicht als Zeichenfolgenliterale dargestellt werden können. Wenn Sie Zeichenfolgen mit eingebetteten NUL-Zeichen einschließen, wird das zurückgegebene Zeichenfolgenliteral vor der ersten NUL abgeschnitten.

Beispiel

Hier ist ein einfaches Beispiel für quote() Funktion, um zu demonstrieren, wie es funktioniert.

SELECT 
  'Money',
  quote('Money'); 

Ergebnis:

'Geld' quote('Geld') ---------- ----------------------Geld 'Geld'  

Beachten Sie, dass die zweite Spalte mit einfachen Anführungszeichen zurückgegeben wird.

Generieren einer SQL-Anweisung

Das quote() Funktion könnte sich als nützlich erweisen, wenn Sie jemals ein SQL INSERT generieren müssen Anweisung aus dem Inhalt einer bestehenden Datenbanktabelle.

Ich habe zum Beispiel die folgende Tabelle mit dem Namen Produkte :

ProductId ProductName Preis ---------- -------------- ----------1 Homer's Widget 10.0 2 Peter's Widget 20.75 3 Bob's Widget 15.0 

Jeder Produktname enthält ein einfaches Anführungszeichen. Wenn ich einen INSERT generieren wollte -Anweisung mit diesen Werten, dann müsste ich die einfachen Anführungszeichen maskieren.

Hier ist ein Beispiel für die Generierung von INSERT Anweisungen aus dieser Tabelle und mit quote() um die einfachen Anführungszeichen zu maskieren.

SELECT 
  'INSERT INTO Products2 (ProductName, Price) 
   VALUES (' || quote(ProductName) || ', ' || Price || ');'
FROM Products; 

Ergebnis:

INSERT INTO Products2 (ProductName, Price) VALUES ('Homer''s Widget', 10.0); INSERT INTO Products2 (ProductName, Price) VALUES ('Peter''s Widget', 20.75); INSERT INTO Products2 (ProductName, Price) VALUES ('Bob''s Widget', 15.0);