Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL基于字符串模式将单列转换为多行_Sql_Postgresql_Split - Fatal编程技术网

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
:(基本上只应删除括号中的文本,而不应删除前面或前面的文本。。。