如何根據 id 在字串中用行號替換換行符 以下是表格中一行的示例,表格有很多行,每行應該以 1 開頭,依此類推。
sample data
I
am
Awesome
desired out put
1.I
2.am
3.Awesome
I tried to replace newline with rownumber but no success
select concat(1.,replace(field,char(10),cast(1 row_number()over(order by field) as varchar),'.') as desired_Formula from tbl
歡迎任何幫助或建議,如果在不使用 cte 的情況下完成它應該是理想的。
uj5u.com熱心網友回復:
一種選擇是基于換行符創建一個陣列,然后UNNEST .. WITH ORDINALITY,以便您有一個行號,然后從那里再次將其變成單行string_agg:
SELECT string_agg(id || '.' ||word,E'\n')
FROM tbl
CROSS JOIN LATERAL
UNNEST(string_to_array(sample,E'\n')) WITH ORDINALITY j (word,id)
GROUP BY sample;
string_agg
------------
1.I
2.am
3.Awesome
(1 Zeile)
如果要將專案拆分為多行,只需擺脫string_agg:
SELECT id || '.' ||word
FROM tbl
CROSS JOIN LATERAL
UNNEST(string_to_array(sample,E'\n')) WITH ORDINALITY j (word,id);
?column?
-----------
1.I
2.am
3.Awesome
(3 Zeilen)
演示:db<>fiddle
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/491457.html
標籤:sql PostgreSQL
