MS SqlServer 中的 Oracle“双”表相当于什么?
这是我的
Select
:
SELECT pCliente,
'xxx.x.xxx.xx' AS Servidor,
xxxx AS Extension,
xxxx AS Grupo,
xxxx AS Puerto
FROM DUAL;
在 SQL Server 中,没有
dual
。您可以简单地跳过 FROM
子句:
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 中不需要 DUAL
在甲骨文中
select 'sample' from dual
等于
SELECT 'sample'
在 SQL Server 中
虽然您通常不需要 SQL Server 中的
DUAL
表,正如 Jean-François Savard 所解释的那样,但过去出于语法原因,我需要模拟 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)
在 SQL Server 中没有双表。如果你想放置一个
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