gpt4 book ai didi

sql - 如果表中不存在第一个字段,则查看同一个表中的不同字段

转载 作者:行者123 更新时间:2023-12-02 09:12:23 24 4
gpt4 key购买 nike

有没有办法从表中选择一个字段,如果该字段不存在,则从同一个表中选择不同的字段?示例:

SELECT MY_FIELD from MY_TABLE

error: "MY_FIELD": invalid identifier

有什么方法可以检查它是否存在,如果存在则使用该字段进行查询,如果不存在则使用示例:

SELECT my_field2 from client.

我的问题是我正在编写一个将在两个数据库上使用的报告,但字段名称有时可能会根据数据库的不同而略有不同。

最佳答案

您真正需要做的是与您的管理/开发主管讨论为什么不同的数据库不协调。但是,由于这是一个编程站点,因此这里是使用动态 SQL 的编程答案。

正如已经指出的,您可以在不同的数据库中创建 View ,为自己提供一个统一的查询层。如果您无法创建 View ,您可以执行以下操作:

create table test ( present_column NUMBER );

insert into test select rownum * 10 from dual connect by rownum <= 5;


declare
l_rc SYS_REFCURSOR;
begin
BEGIN
OPEN l_rc FOR 'SELECT missing_column FROM test';
EXCEPTION
WHEN others THEN
OPEN l_rc FOR 'SELECT present_column FROM test';
END;
-- This next only works in 12c and later
-- In earlier versions, you've got to process l_rc on your own.
DBMS_SQL.RETURN_RESULT(l_rc);
end;

这不如其他解决方案(协调数据库或创建 View )。一方面,您无法通过这种方式对查询进行编译时检查。

关于sql - 如果表中不存在第一个字段,则查看同一个表中的不同字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50740679/

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