sql >> Base de Datos >  >> RDS >> SQLite

Cómo funciona SQLite Quote()

SQLite quote() le permite escapar de una cadena para que sea adecuada para incluirla en una instrucción SQL.

Las cadenas están rodeadas de comillas simples con escapes entre comillas interiores.

Los BLOB se codifican como literales hexadecimales.

Tenga en cuenta que las cadenas con caracteres NUL incrustados no se pueden representar como literales de cadena en SQL. Si incluye cadenas con caracteres NUL incrustados, el literal de cadena devuelto se trunca antes del primer NUL.

Ejemplo

Aquí hay un ejemplo simple de quote() función para demostrar cómo funciona.

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

Resultado:

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

Observe que la segunda columna se devuelve con comillas simples.

Generación de una instrucción SQL

El quote() La función podría ser útil si alguna vez necesita generar un SQL INSERT declaración del contenido de una tabla de base de datos existente.

Por ejemplo, tengo la siguiente tabla llamada Productos :

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

Cada nombre de producto contiene un carácter de comilla simple. Si quisiera generar un INSERT declaración con estos valores, entonces tendría que escapar de los caracteres de comillas simples.

Aquí hay un ejemplo de cómo generar INSERT declaraciones de esta tabla, y usando quote() para escapar de los caracteres de comillas simples.

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

Resultado:

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