是否有办法只更改选择oracle sql时更新的单列值。
SELECT ORDD.id||'sdaf' as id,ORDD.*
FROM RDT_ORDER ORDM,RDT_ORDERDETAIL ORDD;
这里在RDT_ORDERDETAIL中有一些Hundered列但只有一个coulmn我需要更新。
我不想通过在select查询中写下所有列来选择所有的一百列,如下所示
SELECT ORDD.id||'sdaf' as id,ORDD.col1,ORDD.col2,ORDD.col3,ORDD.col4
FROM RDT_ORDER ORDM,RDT_ORDERDETAIL ORDD;
请注意我已经删除了where子句,我需要获取其他列的单个更新列值。但是我不应该在Select中写入所有coulmns。
现有数据库记录:
ID NAME COL3 COL4
1 name1 .. ..
2 name2 .. ..
3 name3 .. ..
现在结果:
ID ID NAME COL3 COL4
1_'sdaf' 1 name1 .. ..
2_'sdaf' 2 name2 .. ..
3_'sdaf' 3 name3 .. ..
预期结果:
ID NAME COL3 COL4
1_'sdaf' name1 .. ..
2_'sdaf' name2 .. ..
3_'sdaf' name3 .. ..
答案 0 :(得分:2)
我认为您不能通过查询select * from...
来排除单个列。可能是VIEW
可以为您提供帮助。
CREATE OR REPLACE VIEW <view_name> AS
SELECT ordd.id||'sdaf' AS id, ordd.col1, ordd.col2, ordd.col3, ordd.col4
FROM rdt_order ordm,
rdt_orderdetail ordd
WHERE .....;
答案 1 :(得分:2)
如果您想选择除一行外的所有行,则答案为否 - you either get all fields (*) OR specify the fields you want.这就是Oracle的工作方式。
如果您仍然坚持,那么可能会有一些解决方法,例如Dynamic SQL using query generator or data cartridge
您可以在here中提及类似问题。
如果你想要一个字符串操作,你可以使用别名来完成所有列。
SELECT COL1||'_asd_', T.*
FROM MYTABLE T;
您无法直接从一个表中获取所有列的操作,而这些列在一个或多个列上没有编写器限制。您可以尝试使用动态SQL,但我不建议任何事情,因为可维护性低,从长远来看会头疼。