046.PGSQL-format字符格式化实现批量给表加索引
format格式化
格式说明符由 % 字符引进,格式为
%[ position ] type
组件的字段有:
position (optional)
n$ 格式的字符串,这里的n是要打印的参数的索引。索引为1表示在formatstr之后的第一个参数。如果省略了position,默认使用序列中的下一个参数。
type (required)
格式转换的类型用来产生格式说明符的输出。支持下列的类型:
s 格式参数值为简单的字符串。空值作为空字符串对待。
I 将参数值作为SQL标识符对待,如果需要,双写它。值为空是错误的。
L 引用参数值作为SQL文字。空值用字符串 NULL 显示,没有引用。
除了上述的格式说明符,特殊的序列 %% 可以用作输出 % 字符。
生成给一个表所有字段加索引
SELECT format('create index inde_%I on o_ls_test_recovery(%I)', attname,attname) FROM pg_attribute WHERE attrelid = 'o_ls_test_recovery'::regclass AND attnum > 0 ORDER BY attnum
format格式化字符串,类似C语言的sprintf,其中n$表示第n个参数
select format('Hello %s, %1$s', 'World');
SELECT format('COMMENT ON TABLE "myschema"."%I" IS %L;','o_ls_test_1','测试表')
SELECT format('INSERT INTO %I VALUES(%L)', 'Foo bar', E'O\'Reilly');