gpt4 book ai didi

mysql - Oracle 替换函数

转载 作者:行者123 更新时间:2023-11-29 00:30:35 33 4
gpt4 key购买 nike

我需要在选择查询时用表 2 的值替换表 1 的字段值。

例如:

表 1:

Org                  Permission
--------------------------------------
Company1 1,3,7
Company2 1,3,8

表 2:

Permission          Permission
--------------------------------------
1 Read
3 Write
7 Execute
8 Delete

我需要这样:

Org                  Permission
--------------------------------------
Company1 Read,Write,Execute
Company2 Read,Write,Delete

最佳答案

如果您不想更新现有表而只想选择数据,那么您可以使用这个有点费力的查询。

http://sqlfiddle.com/#!4/22909/4

WITH changed_table AS
(SELECT val1, EXTRACTVALUE (x.COLUMN_VALUE, 'e') val2new
FROM (SELECT val1, val2 xml_str
FROM table1),
TABLE (XMLSEQUENCE (XMLTYPE ( '<e><e>'
|| REPLACE (xml_str, ',', '</e><e>')
|| '</e></e>'
).EXTRACT ('e/e')
)
) x)
SELECT ct.val1, listagg(table2.val2,',') within group (order by table2.val2) val2
FROM changed_table ct, table2 table2
WHERE ct.val2new = table2.val1
group by ct.val1;

我使用 XMLTYPE 将逗号分隔的数字分隔到行中。然后将行与第二个表连接起来以获得描述,最后使用 LISTAGG 函数形成逗号分隔的字符串。不知道这个查询的效率如何。我同意 Mark Ba​​nnister 的评论。

关于mysql - Oracle 替换函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16710990/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com