我正在运行一个返回表
的查询key value
a_1 5
c_4 9
a_2 3
b_1 4
b_3 1
说我想要修改我的密钥,以便每个b都会被替换为d,以便表格看起来像
key value
a_1 5
c_4 9
a_2 3
d_1 4 <--modified
d_3 1 <--modified
我怎么能在sql(oracle)中做到这一点?
编辑:此表中的条目是值的总和。当我按照前两个响应者的建议时,sql不再对键进行分组,而是给出错误消息“missing expression”。 我尝试将键REPLACE(键,'b','d')定义为newKey和group by newKey,但是这样也没有用。 知道如何解决这个问题吗?
编辑2:分组在提议的解决方案中也有效。在我身边犯了一个错误。感谢
答案 0 :(得分:1)
试试这个,
WITH t(KEY, VALUE) AS
(
SELECT 'a_1', 5 FROM dual
union
SELECT 'c_4', 9 FROM dual
UNION
SELECT 'a_2', 3 FROM dual
UNION
SELECT 'b_1', 4 FROM dual
UNION
SELECT 'b_3', 1 FROM dual
)
SELECT REPLACE(KEY, 'b', 'd') key1 , value
FROM t
ORDER BY key1;
/
KEY1 VALUE
---- ----------
a_1 5
a_2 3
c_4 9
d_1 4
d_3 1
答案 1 :(得分:1)
试试这个......
SELECT REPLACE(`key`, 'b', 'd') key, `value` FROM tablename
答案 2 :(得分:0)
您可以使用以下查询此查询适用于Oracle 11g R2
SELECT REPLACE("key", 'b', 'd') as "key", "value" FROM Table1;;
演示http://sqlfiddle.com/#!4/8b17c/11
请不要使用字段名作为键和值,它们可能会在任何查询中的许多地方发生冲突