1. 程式人生 > 其它 >046.PGSQL-format字元格式化實現批量給表加索引

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