66

MS SqlServer 中的 Oracle“双”表的等价物是什么?

这是我的Select

SELECT pCliente,
       'xxx.x.xxx.xx' AS Servidor,
       xxxx AS Extension,
       xxxx AS Grupo,
       xxxx AS Puerto
FROM DUAL;
4

4 回答 4

75

sql-server, 没有dual你可以简单地做

SELECT pCliente,
       'xxx.x.xxx.xx' AS Servidor,
        xxxx AS Extension,
        xxxx AS Grupo,
        xxxx AS Puerto

但是,如果您的问题是因为您传输了一些Oracle引用dual您可以重新创建表的代码:

CREATE TABLE DUAL
(
DUMMY VARCHAR(1)
)
GO
INSERT INTO DUAL (DUMMY)
VALUES ('X')
GO
于 2015-02-06T17:29:54.927 回答
31

您不需要在 mssql 服务器中使用DUAL

在甲骨文中

select 'sample' from dual

等于

SELECT 'sample'

在 sql 服务器中

于 2016-02-07T14:19:54.550 回答
6

正如Jean-François Savard所解释的,虽然您通常不需要DUALSQL Server 中的表,但我过去出于句法原因需要进行模拟。这里有三个选项:DUAL

创建DUAL表或视图

-- A table
SELECT 'X' AS DUMMY INTO DUAL;

-- A view
CREATE VIEW DUAL AS SELECT 'X' AS DUMMY;

创建后,您可以像在 Oracle 中一样使用它。

使用公用表表达式或派生表

如果您只需要DUAL单个查询的范围,也可以这样做:

-- Common table expression
WITH DUAL(DUMMY) AS (SELECT 'X')
SELECT * FROM DUAL

-- Derived table
SELECT *
FROM (
  SELECT 'X'
) DUAL(DUMMY)
于 2016-02-07T14:39:28.320 回答
1

在 SQL Server 中没有双表。如果你想放一个WHERE子句,你可以简单的直接放,像这样:

SELECT 123 WHERE 1<2

我认为在 MySQL 和 Oracle 中,他们需要一个 FROM 子句才能使用 WHERE 子句。

SELECT 123 FROM DUAL WHERE 1<2

于 2016-12-09T18:10:39.327 回答