什么相当于MS SQLServer中的Oracle“DUAL”表?

smtd7mpg  于 2022-09-18  发布在  Java
关注(0)|答案(6)|浏览(522)

什么相当于MS SQLServer中的Oracle“DUAL”表?

这是我的Select

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

jvlzgdj91#

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
0tdrvxhp

0tdrvxhp2#

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

在Oracle中

select 'sample' from dual

等于

SELECT 'sample'

在SQL SERVER中

w6lpcovy

w6lpcovy3#

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

w7t8yxp54#

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

SELECT 123 WHERE 1<2

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

SELECT 123 FROM DUAL WHERE 1<2

baubqpgj

baubqpgj5#

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

注意:局部变量必须是

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
wmtdaxz3

wmtdaxz36#

这比这简单多了。使用文字值来建立数据类型。如果列名需要特殊字符,请用引号将其引起来。如果需要一行数据,请跳过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

相关问题