我有下表,命名为商店:
store_id INT
emails VARCHAR
包含值:
store_id | 电子邮件 |
---|---|
1 | [email protected],[email protected] |
2 | [email protected],[email protected] |
4 | [email protected] |
我想生成以下集合:
store_id | 电子邮件 |
---|---|
1 | [email protected] |
1 | [email protected] |
2 | [email protected] |
2 | [email protected] |
4 | [email protected] |
如您所见,我想将电子邮件字段拆分为仅包含一个电子邮件地址的单独记录。你知道我该怎么做吗?
到目前为止,我设法创建了以下查询:
select store_id,string_to_array(emails,',') from stores
但我不知道如何将其拆分string_to_array
为自己的行。
您需要
UNNEST()
与以下内容结合使用(此处STRING_TO_ARRAY()
提供小提琴):填充:
然后运行这个查询:
结果:
提醒一句 - 根据您的电子邮件在字符串中的格式,您可能希望使用该
TRIM()
功能来确保电子邮件中没有前面或后面的空格(如小提琴所示)。如果您简单地运行,您可以剖析正在发生的事情:
结果(请参阅更新的小提琴) - 电子邮件仍然只是一个记录 - UNNEST 将数组的每个单独元素放入不同的行!: