sql >> Database >  >> RDS >> SQLite

Hoe SQLite Quote() werkt

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


  1. Oracle, PDO_OCI versus OCI8

  2. Typen in MySQL:BigInt(20) vs Int(20)

  3. Slechte gewoonten:rijen tellen op de harde manier

  4. Hoeveel impact kan een datatypekeuze hebben?