De SQLite quote()
functie stelt u in staat om een tekenreeks te escapen zodat deze geschikt is voor opname in een SQL-instructie.
Strings zijn omgeven door enkele aanhalingstekens met escapes op interne aanhalingstekens.
BLOB's worden gecodeerd als hexadecimale letterlijke waarden.
Merk op dat strings met ingesloten NUL-tekens niet kunnen worden weergegeven als letterlijke tekenreeksen in SQL. Als u tekenreeksen met ingesloten NUL-tekens opneemt, wordt de geretourneerde letterlijke tekenreeks afgekapt vóór de eerste NUL.
Voorbeeld
Hier is een eenvoudig voorbeeld van de quote()
functie om te demonstreren hoe het werkt.
SELECT
'Money',
quote('Money');
Resultaat:
'Money' quote('Money') ---------- ---------------------- Money 'Money'
Merk op dat de tweede kolom wordt geretourneerd met enkele aanhalingstekens.
Een SQL-instructie genereren
De quote()
functie kan van pas komen als u ooit een SQL INSERT
. moet genereren statement uit de inhoud van een bestaande databasetabel.
Ik heb bijvoorbeeld de volgende tabel met de naam Producten :
ProductId ProductName Price ---------- -------------- ---------- 1 Homer's Widget 10.0 2 Peter's Widget 20.75 3 Bob's Widget 15.0
Elke productnaam bevat een enkel aanhalingsteken. Als ik een INSERT
. wil genereren statement met deze waarden, dan moet ik de enkele aanhalingstekens escapen.
Hier is een voorbeeld van het genereren van INSERT
instructies uit deze tabel, en met behulp van quote()
om te ontsnappen aan de enkele aanhalingstekens.
SELECT
'INSERT INTO Products2 (ProductName, Price)
VALUES (' || quote(ProductName) || ', ' || Price || ');'
FROM Products;
Resultaat:
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);