我在列中有逗号分隔的数据:
Column
-------
a,b,c,d
Run Code Online (Sandbox Code Playgroud)
我想将逗号分隔数据拆分为多个列以获得此输出:
Column1 Column2 Column3 Column4
------- ------- ------- -------
a b c d
Run Code Online (Sandbox Code Playgroud)
怎么能实现这一目标?
我是postrges的新手,想要对varchar类型列进行排序.想用下面的例子来解释这个问题:
表名:testsorting
order name
1 b
2 B
3 a
4 a1
5 a11
6 a2
7 a20
8 A
9 a19
Run Code Online (Sandbox Code Playgroud)
区分大小写的排序(在postgres中是默认的)给出:
select name from testsorting order by name;
A
B
a
a1
a11
a19
a2
a20
b
Run Code Online (Sandbox Code Playgroud)
案例敏感排序给出:
通过UPPER(名称)从测试排序中选择名称;
A
a
a1
a11
a19
a2
a20
B
b
Run Code Online (Sandbox Code Playgroud)
如何在postgres中进行字母数字大小写的敏感排序以获得以下顺序:
a
A
a1
a2
a11
a19
a20
b
B
Run Code Online (Sandbox Code Playgroud)
我不介意资本或小写字母的订单,但订单应该是"aAbB"或"AaBb",不应该是"ABab"
如果您在postgres中有任何解决方案,请建议.
我的表中有一系列字符串,我想订购.例如.
Chapter 1
Chapter 2
Chapter 11
Chapter 12
Run Code Online (Sandbox Code Playgroud)
要正确地订购它,我需要用零填充它们.
Chapter 001
Chapter 002
Chapter 011
Chapter 012
Run Code Online (Sandbox Code Playgroud)
也许我可以使用regexp_replace()
正则表达式在零中使用pad.
regexp_replace(chapters.name,'(\d+)\D*','0\1') as name
Run Code Online (Sandbox Code Playgroud)
此解决方案不起作用.我想也许我可以弄清楚反向引用的长度并使用该数字填充我需要的东西:
regexp_replace(chapters.name,'(\d+)\D*',lpad('\l',3-length('\1'),'0') as name
Run Code Online (Sandbox Code Playgroud)
但\1
在length()
总是返回2,即使我使用注意到\1
在某些Postgres的功能转化\1
为实际捕获的数据.
如何使用Postgres字符串函数和Postgres正则表达式填充零?