MS SqlServer 中的 Oracle "Dual" table 相当于什么?

What is the equivalent of the Oracle "Dual" table in MS SqlServer?

MS SqlServer 中的 Oracle "Dual" table 相当于什么?

这是我的 Select:

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

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

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

但是,如果您的问题是因为您从 Oracle 转移了一些引用 dual 的代码,您可以重新创建 table :

CREATE TABLE DUAL
(
DUMMY VARCHAR(1)
)
GO
INSERT INTO DUAL (DUMMY)
VALUES ('X')
GO

在 mssql server

中不需要 DUAL

在 Oracle 中

select 'sample' from dual

等于

SELECT 'sample'

在sql服务器

虽然您通常不需要 SQL 服务器中的 DUAL table,如 所述,但我需要模拟 DUAL过去的句法原因。这里有三个选项:

创建 DUAL table 或查看

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

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

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

使用常见的 table 表达式或派生的 table

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

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

-- Derived table
SELECT *
FROM (
  SELECT 'X'
) DUAL(DUMMY)

在SQL服务器中没有双重table。如果你想放一个WHERE子句,你可以像这样直接放:

SELECT 123 WHERE 1<2

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

SELECT 123 FROM DUAL WHERE 1<2

我想这可能会有所帮助,当您需要根据局部变量连接一些表并从这些表中获取信息时:

注意:局部变量必须已经

Select  @XCode     as 'XCode '
       ,@XID       as 'XID   '  
       ,x.XName    as 'XName '
       ,@YCode     as 'YCode '
       ,@YID       as 'YID   '
       ,y.YName    as 'YName '
From (Select 1 as tst) t
Inner join Xtab x on x.XID = @XID
Inner join Ytab y on y.YID = @YID