在引用双重表时(例如,
),在Oracle SQL中从无选择中进行选择SELECT sysdate FROM dual;
现在,我想拥有一个对PostgreSQL也适用的查询,但是不可能从双查询中进行选择。我知道我可以删除整个FROM
部分,但是在Oracle中将无法使用。
我也尝试过类似SELECT CURRENT_TIMESTAMP FROM VALUES(1)) V(C);
之类的事情,但是Oracle也无法做到这一点。
那么有没有办法在不使用Oracle SQL中的dual
表的情况下从任何地方进行选择?
答案 0 :(得分:2)
或者,在Postgres中创建一个名为[Test]
//note this is also async now
public async Task WriteToDBShouldWrite()
{
var mockObject = new Mock<INameRepo>();
mockObject.Setup(x => x.GetName()).ReturnsAsync("Frank");
string result = mockObject.Object.WriteNameToDataBase();
Employee emp = new Employee(mockObject.Object);
await emp.WriteToDBShouldWrite();
//ensure GetName is called once and once only
mockObject.Verify(v => v.GetName(), TimesOnce);
}
的表,该表由1行1列组成
dual
您可以像在Oracle中那样在Postgres中使用它
create table dual as (select 1);
答案 1 :(得分:0)
.extend
是一个内置函数,即不是数据库表列。您可以使用任何表,只要查询恰好返回一行,例如
sysdate
答案 2 :(得分:0)
如果您的小表TABLE_B至少有一行,则可以尝试从中选择一行。
select sysdate from TABLE_B where rownum < 2;
该表的内容无关紧要,因为您将不会选择该表的任何列。
答案 3 :(得分:0)
以下代码使用XMLTABLE
函数在Oracle和Postgres(10+)中生成伪造的行。这段代码很奇怪,但是不需要任何自定义对象。
--Generate a fake row in either Oracle or Postgres.
select *
from xmltable
(
--The expression syntax is different for Oracle and Postgres.
--Oracle can use a literal, Postgres must reference the XML.
--The string '' is null in Oracle but not null in Postgres.
case when '' is null then '1' else '/a' end passing '<a>1</a>'
columns test int path '.'
);
test
----
1