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

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

这是我的 Select:

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

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

在 MSSQLserver 中不需要 双人

在甲骨文

select 'sample' from dual

等于

SELECT 'sample'

在 sql 服务器中

虽然您通常不需要像 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)

在 SQLServer 中没有对偶表。如果你想加入一个 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

比那简单多了。 使用文本值建立数据类型。 如果列名需要特殊字符,则在列名周围加引号。 如果需要1行数据,请跳过 WHERE 子句:

SELECT  'XCode' AS XCode
,1 AS XID
,'XName' AS "X Name"
,'YCode' AS YCode
,getDate() AS YID
,'YName' AS "Your Name"
WHERE 1 = 0