Specifies parameter values to fill in for placeholders inside SQL.
This option is designed to be used through API (though nothing really prevents usage from command line).
Arrayof strings for position placeholders.Objectof name-value pairs for named (and indexed) placeholders.
Note: The escaping of values must be handled by user of the API.
For positional placeholders use array of values:
format('SELECT * FROM persons WHERE fname = ? AND age = ?', {
params: ["'John'", '27'],
language: 'sql',
});Results in:
SELECT
*
FROM
persons
WHERE
fname = 'John'
AND age = 27For named placeholders use object of name-value pairs:
format('SELECT * FROM persons WHERE fname = @name AND age = @age', {
params: { name: "'John'", age: '27' },
language: 'tsql',
});Results in:
SELECT
*
FROM
persons
WHERE
fname = 'John'
AND age = 27Treat numbered placeholders the same as named ones and use an object of number-value pairs:
format('SELECT * FROM persons WHERE fname = $1 AND age = $2', {
params: { 1: "'John'", 2: '27' },
language: 'postgresql',
});Results in:
SELECT
*
FROM
persons
WHERE
fname = 'John'
AND age = 27Some dialects (BigQuery, Transact SQL) also support quoted names for placeholders:
format('SELECT * FROM persons WHERE fname = @`first name` AND age = @`age`', {
params: { 'first name': "'John'", 'age': '27' },
language: 'bigquery',
});Results in:
SELECT
*
FROM
persons
WHERE
fname = 'John'
AND age = 27The placeholder types available by default depend on SQL dialect used:
- sql -
? - bigquery -
?,@name,@`name` - db2 -
?,:name - db2i -
?,:name - hive - no support
- mariadb -
? - mysql -
? - n1ql -
?,$1,$name - plsql -
:1,:name - postgresql -
$1 - redshift -
$1 - snowflake - no support
- sqlite -
?,?1,:name,@name,$name - spark - no support
- tidb -
? - tsql -
@name,@"name",@[name] - trino - no support
If you need to use a different placeholder syntax than the builtin one, you can configure the supported placeholder types using the paramTypes config option.