SQLite
 sql >> Database >  >> RDS >> SQLite

Come funziona SQLite Quote()

Il quote() di SQLite La funzione consente di eseguire l'escape di una stringa in modo che sia adatta per l'inclusione in un'istruzione SQL.

Le stringhe sono circondate da virgolette singole con escape sulle virgolette interne.

I BLOB sono codificati come letterali esadecimali.

Si noti che le stringhe con caratteri NUL incorporati non possono essere rappresentate come stringhe letterali in SQL. Se includi stringhe con caratteri NUL incorporati, la stringa letterale restituita viene troncata prima del primo NUL.

Esempio

Ecco un semplice esempio di quote() funzione per dimostrare come funziona.

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

Risultato:

'Money'     quote('Money')        
----------  ----------------------
Money       'Money'               

Si noti che la seconda colonna viene restituita con virgolette singole.

Generazione di un'istruzione SQL

Il quote() la funzione potrebbe tornare utile se hai bisogno di generare un INSERT SQL istruzione dal contenuto di una tabella di database esistente.

Ad esempio, ho la seguente tabella chiamata Prodotti :

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

Ogni nome di prodotto contiene un singolo carattere di virgolette. Se volessi generare un INSERT dichiarazione con questi valori, allora avrei bisogno di evitare i caratteri di virgolette singole.

Ecco un esempio di generazione di INSERT istruzioni da questa tabella e utilizzando quote() per evitare le virgolette singole.

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

Risultato:

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);