如果我错过了解决问题的可能方法,很抱歉,但我需要一些建议。我相信有一个简单的解决办法,但我没有看到它(目前)。
因此,我有一个Postgres DB表,它需要大量更新,只需在字符串中的特定位置添加一个字符。
示例:
select PINFO.title, SUBSTRING(PINFO.title FROM ',\ (.+). del') AS ep_num from my_table where my_condition...
所以我得到了这样的东西:
+--------------------+--------+
| title | ep_num |
+--------------------+--------+
| my_series, 01. del | 01 |
| my_series, 10. del | 10 |
| my_series, 11. del | 11 |
| my_series, 2. del | 2 |
| my_series, 3. del | 3 |
| my_series, 4. del | 4 |
| my_series, 5. del | 5 |
| my_series, 6. del | 6 |
| my_series, 7. del | 7 |
| my_series, 8. del | 8 |
| my_series, 9. del | 9 |
+--------------------+--------+所以,我想要的是,在数字小于10的情况下,添加一个0。所以我的预期结果应该是:
+--------------------+--------+
| title | ep_num |
+--------------------+--------+
| my_series, 01. del | 01 |
| my_series, 10. del | 10 |
| my_series, 11. del | 11 |
| my_series, 02. del | 02 |
| my_series, 03. del | 03 |
| my_series, 04. del | 04 |
| my_series, 05. del | 05 |
| my_series, 06. del | 06 |
| my_series, 07. del | 07 |
| my_series, 08. del | 08 |
| my_series, 09. del | 09 |
+--------------------+--------+什么是最好的方法?我需要更新表,而不是这样打印输出。谢谢!M.
发布于 2019-05-15 08:15:55
UPDATE my_table
SET
title = 'my_series, ' || lpad(ep_num, 2, '0') || '. del',
ep_num = lpad(ep_num, 2, '0')使用lpad()函数
无ep_num 列
UPDATE my_table mt
SET title = parts[1] || ' ' || lpad(parts[2], 3, '0') || ' ' || parts[3]
FROM (
SELECT
title,
regexp_split_to_array(title, ' ') AS parts
FROM
my_table
) s
WHERE mt.title = s.titleregexp_split_to_table()将空格处的标题分成三个部分。它们可以在左填充第二块后再次合并。这里的lpad()函数创建了一个3字符长的文本,而不是2,因为之前的拆分也涉及到点。
https://stackoverflow.com/questions/56144495
复制相似问题