Basic usage of the sql template tag
mainUse the sql tagged template literal to create a query object. This object contains different string formats compatible with various database drivers, along with the extracted parameter values.
query.sql: Uses?placeholders (compatible withmysql).query.text: Uses$1,$2, etc. placeholders (compatible withpg).query.statement: Uses:1,:2, etc. placeholders (compatible withoracledb).query.values: An array of the interpolated values.
You can nest sql instances inside other sql templates.
import sql, { empty, join, raw } from "sql-template-tag";
const id = 1;
const query = sql`SELECT * FROM books WHERE id = ${id}`;
// Output formats:
// query.sql => "SELECT * FROM books WHERE id = ?"
// query.text => "SELECT * FROM books WHERE id = $1"
// query.statement => "SELECT * FROM books WHERE id = :1"
// query.values => [1]
// Database integration examples:
// pg.query(query); // Uses `text` and `values`
// mysql.query(query); // Uses `sql` and `values`
// oracledb.execute(query); // Uses `statement` and `values`
// Nesting SQL instances:
// const nested = sql`SELECT id FROM authors WHERE name = ${"Blake"}`;
// const query = sql`SELECT * FROM books WHERE author_id IN (${nested})`;
// Using helpers for conditional queries:
// sql`SELECT * FROM books ${hasIds ? sql`WHERE ids IN (${join(ids)})` : empty}`;