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

时间:2015-02-06 17:25:08

标签: sql-server oracle dual-table

Oracle" Dual"等同于什么? MS SqlServer中的表?

这是我的Select

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

4 个答案:

答案 0 :(得分:54)

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

答案 1 :(得分:20)

您在mssql server

中不需要 DUAL

在oracle

select 'sample' from dual

等于

SELECT 'sample'

在sql server中

答案 2 :(得分:2)

虽然Jean-François Savard解释了您在SQL Server中通常不需要DUAL表,但出于语法原因,我需要模仿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)

答案 3 :(得分:-1)

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

SELECT 123 WHERE 1<2

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

SELECT 123 FROM DUAL WHERE 1<2