SQL基于字符串模式将单列转换为多行
我有一个包含以下示例数据的表:SQL基于字符串模式将单列转换为多行,sql,postgresql,split,Sql,Postgresql,Split,我有一个包含以下示例数据的表: id, query ---------- 25, normal query 25, query with brackets (example1) 46, brackets in query (example2) (example3) 55, text1 (example4) text2 对于有括号的查询,我想在表中添加一行,每个括号中的信息如下: id, query ---------- 25, normal query 25, query with brac
id, query
----------
25, normal query
25, query with brackets (example1)
46, brackets in query (example2) (example3)
55, text1 (example4) text2
对于有括号的查询,我想在表中添加一行,每个括号中的信息如下:
id, query
----------
25, normal query
25, query with brackets
25, example1
46, brackets in query
46, example2
46, example3
55, text1 text2
55, example4
我可以很容易地识别带有括号的行,如“%”(.%%”,但是我不确定如何拆分和添加新行
谢谢
select
id,
regexp_split_to_table(
replace(query,')','')
,E'\\(') query
from TestTable
结果:
| id | query |
|----|----------------------|
| 25 | normal query |
| 25 | query with brackets |
| 25 | example1 |
| 46 | brackets in query |
| 46 | example2 |
| 46 | example3 |
| id | query |
|----|----------------------|
| 25 | normal query |
| 25 | query with brackets |
| 25 | example1 |
| 46 | brackets in query |
| 46 | example2 |
| 46 | example3 |
| 55 | text1 |
| 55 | example4 |
| 55 | text2 |
关于新问题:
谢谢!!你能帮我修一下新的55排吗?我已经对问题进行了编辑并要求输出
结果:
| id | query |
|----|----------------------|
| 25 | normal query |
| 25 | query with brackets |
| 25 | example1 |
| 46 | brackets in query |
| 46 | example2 |
| 46 | example3 |
| id | query |
|----|----------------------|
| 25 | normal query |
| 25 | query with brackets |
| 25 | example1 |
| 46 | brackets in query |
| 46 | example2 |
| 46 | example3 |
| 55 | text1 |
| 55 | example4 |
| 55 | text2 |
结果:
| id | query |
|----|----------------------|
| 25 | normal query |
| 25 | query with brackets |
| 25 | example1 |
| 46 | brackets in query |
| 46 | example2 |
| 46 | example3 |
| id | query |
|----|----------------------|
| 25 | normal query |
| 25 | query with brackets |
| 25 | example1 |
| 46 | brackets in query |
| 46 | example2 |
| 46 | example3 |
| 55 | text1 |
| 55 | example4 |
| 55 | text2 |
关于新问题:
谢谢!!你能帮我修一下新的55排吗?我已经对问题进行了编辑并要求输出
结果:
| id | query |
|----|----------------------|
| 25 | normal query |
| 25 | query with brackets |
| 25 | example1 |
| 46 | brackets in query |
| 46 | example2 |
| 46 | example3 |
| id | query |
|----|----------------------|
| 25 | normal query |
| 25 | query with brackets |
| 25 | example1 |
| 46 | brackets in query |
| 46 | example2 |
| 46 | example3 |
| 55 | text1 |
| 55 | example4 |
| 55 | text2 |
这对我来说毫无意义。如何处理相关子查询或嵌套子查询(超过2级)?你想如何区分函数调用和子查询?啊,当然,对于括号中的每个文本,我想添加一个具有相同id的新行。我已经进行了编辑。这对我来说没有意义。如何处理相关子查询或嵌套子查询(超过2级)?您想如何区分函数调用和子查询?啊,当然,对于括号中的每个文本,我想添加一个具有相同id的新行。我已经进行了编辑。谢谢!!你能帮我弄一下新行吗?我已经对问题进行了编辑并要求输出。嗯。。。非常感谢你的麻烦!但是它没有为
55
提供所需的输出,例如55,text1 text2
和55,示例4
:(基本上只有括号中的文本应该被删除,而不是前面或之前的文本…谢谢!!你能帮我处理新行55
?我已经对问题进行了编辑并要求了输出。嗯…非常感谢你的麻烦!但它没有给出55
所需的输出,如55,text1 text2
和55,示例4
:(基本上只应删除括号中的文本,而不应删除前面或前面的文本。。。