SQLite quote()
funkcja pozwala na zmianę znaczenia ciągu, aby nadawał się do włączenia do instrukcji SQL.
Ciągi otoczone są pojedynczymi cudzysłowami ze znakami ucieczki na wewnętrznych cudzysłowach.
Bloki BLOB są zakodowane jako literały szesnastkowe.
Zauważ, że ciągi z osadzonymi znakami NUL nie mogą być reprezentowane jako literały ciągów w SQL. Jeśli dołączysz ciągi z osadzonymi znakami NUL, zwrócony literał ciągu zostanie obcięty przed pierwszym znakiem NUL.
Przykład
Oto prosty przykład quote()
funkcji, aby zademonstrować, jak to działa.
SELECT
'Money',
quote('Money');
Wynik:
'Money' quote('Money') ---------- ---------------------- Money 'Money'
Zauważ, że druga kolumna jest zwracana z pojedynczymi cudzysłowami.
Generowanie instrukcji SQL
quote()
funkcja może się przydać, jeśli kiedykolwiek będziesz musiał wygenerować SQL INSERT
oświadczenie z zawartości istniejącej tabeli bazy danych.
Na przykład mam następującą tabelę o nazwie Produkty :
ProductId ProductName Price ---------- -------------- ---------- 1 Homer's Widget 10.0 2 Peter's Widget 20.75 3 Bob's Widget 15.0
Każda nazwa produktu zawiera jeden znak cudzysłowu. Gdybym chciał wygenerować INSERT
oświadczenie z tymi wartościami, wtedy musiałbym uciec przed znakami pojedynczego cudzysłowu.
Oto przykład generowania INSERT
oświadczenia z tej tabeli i użycie quote()
aby pominąć pojedyncze znaki cudzysłowu.
SELECT
'INSERT INTO Products2 (ProductName, Price)
VALUES (' || quote(ProductName) || ', ' || Price || ');'
FROM Products;
Wynik:
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);