postgresql - Postgres用双引号将字符串拆分为多行?
问题描述
我有一个看起来像这样的表:
|---------------------|-----------------------------------------------|
| ID (int) | Location (string) |
|---------------------|-----------------------------------------------|
| 1 | ["Humboldt, TN","Medina, TN","Milan, TN"] |
|---------------------|-----------------------------------------------|
我想把它变成一个看起来像这样的表格:
|---------------------|-----------------------------------------------|
| ID (int) | Location (string) |
|---------------------|-----------------------------------------------|
| 1 | Humboldt, TN |
|---------------------|-----------------------------------------------|
| 1 | Medina, TN |
|---------------------|-----------------------------------------------|
| 1 | Milan, TN |
|---------------------|-----------------------------------------------|
查询会是什么样子?我想我可以在 a 上拆分文本,,
但我需要一种方法来忽略双引号内的逗号。
解决方案
该location
字符串类似于文本数组。将其转换为text[]
并取消嵌套:
with my_data(id, location) as (
values
(1, '["Humboldt, TN","Medina, TN","Milan, TN"]')
)
select id, unnest(format('{%s}', trim(location, '[]'))::text[]) as location
from my_data
id | location
----+--------------
1 | Humboldt, TN
1 | Medina, TN
1 | Milan, TN
(3 rows)
或者更简单,将字符串转换为jsonb
并使用jsonb_array_elements_text()
:
with my_data(id, location) as (
values
(1, '["Humboldt, TN","Medina, TN","Milan, TN"]')
)
select id, jsonb_array_elements_text(location::jsonb) as location
from my_data
推荐阅读
- jquery - Firefox 上的 Jquery ajax 错误 0
- python - Python重新初始化对象
- ruby-on-rails - Ruby on Rails 5 强参数
- android - Dagger 2 - 使用自定义范围时依赖项不是单例
- excel - VBA 设置前景窗口
- c# - Xamarin Android BootReceiver 检查包
- git - git-upload-pack:在 Windows 上找不到命令,但在 osx 上有效
- fusioncharts - 如何在 Fusion Chart 的 X 轴上添加 2 行标签?
- bash - 使用 Bash-Utils 进行时间戳减法
- javascript - 这个 RegExp 中导致无限循环的错误在哪里?