Ppostgre SQL 中 %s,%I,%L 区别
以下来自PG官网
s formats the argument value as a simple string. A null value is treated as an empty string.
I treats the argument value as an SQL identifier, double-quoting it if necessary. It is an error for the value to be null (equivalent to quote_ident).
L quotes the argument value as an SQL literal. A null value is displayed as the string NULL, without quotes (equivalent to quote_nullable).
s将参数值格式化为简单字符串。空值被视为空字符串。
I将参数值视为 SQL 标识符,必要时将其双引号。值为 null(相当于quote_ident)是错误的。
L将参数值引用为 SQL 文字。空值显示为字符串NULL,不带引号(相当于quote_nullable)。
SELECT format('Hello %s', 'World');
Result: Hello World
SELECT format('Testing %s, %s, %s, %%', 'one', 'two', 'three');
Result: Testing one, two, three, %
SELECT format('INSERT INTO %I VALUES(%L)', 'Foo bar', E'O\'Reilly');
Result: INSERT INTO "Foo bar" VALUES('O''Reilly')
SELECT format('INSERT INTO %I VALUES(%L)', 'locations', 'C:\Program Files');
Result: INSERT INTO locations VALUES('C:\Program Files')