【发布时间】:2015-02-17 04:55:51
【问题描述】:
我的表中有一系列要订购的字符串。 例如。
Chapter 1
Chapter 2
Chapter 11
Chapter 12
要正确订购它们,我需要用零填充它们。
Chapter 001
Chapter 002
Chapter 011
Chapter 012
也许我可以使用 regexp_replace() 用正则表达式填充零。
regexp_replace(chapters.name,'(\d+)\D*','0\1') as name
此解决方案不起作用。我想也许我可以计算出反向引用的长度并使用该数字来填充我需要的内容:
regexp_replace(chapters.name,'(\d+)\D*',lpad('\l',3-length('\1'),'0') as name
但 length() 中的 \1 总是返回 2,尽管我注意到在某些 postgres 函数中使用 \1 将 \1 转换为实际捕获的数据。
如何使用 Postgres 字符串函数和 Postgres 正则表达式填充零?
【问题讨论】:
标签: sql regex postgresql natural-sort