在MS SqlServer中,Oracle的“Dual”表的等价物是什么?
这是我的Select
语句:
SELECT pCliente,
'xxx.x.xxx.xx' AS Servidor,
xxxx AS Extension,
xxxx AS Grupo,
xxxx AS Puerto
FROM DUAL;
在MS SqlServer中,Oracle的“Dual”表的等价物是什么?
这是我的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
的代码,您可以重新创建表格:
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 Server中
虽然正如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)
WHERE
子句,可以直接像这样简单地放置它:
SELECT 123 WHERE 1<2
我认为在MySQL和Oracle中,需要使用FROM子句才能使用WHERE子句。
SELECT 123 FROM DUAL WHERE 1<2
其实比那更简单。 使用字面值来确定数据类型。 如果列名需要特殊字符,请在其周围加上引号。 如果您只需要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
当你需要基于本地变量连接一些表并从这些表中获取信息时,以下内容可能会有所帮助:
注意:本地变量必须已经存在。
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
dual
最初是为了某种内部用例而创建的,其中连接到它会复制行,但在某个时间点,情况失控,因为 Oracle 要求使用FROM
子句,即使所选取的值不需要表也是如此,因此它变得常用于选择。 - AndySELECT * FROM ( SELECT 'COL1' COL1, 'COL2' COL2, M FROM DUAL FULL OUTER JOIN (SELECT 'COL3-ROW1' M FROM DUAL UNION ALL SELECT 'COL3-ROW2' M FROM DUAL) ON 1=1 )
- AndyDaSilva52(values('x')) DUAL(DUMMY)
来检索具有ANY
结果的单列查询结果(粗体为框架生成的内容,斜体为我作为参数提供的内容):SELECT CASE WHEN 'X' = ANY (SELECT COLUMN FROM TABLE) THEN 1 ELSE 0 END RESULT FROM _(VALUES('X')) DUAL(DUMMY)_。它在大多数 SQL 引擎中都能正常工作。 - Lucio Menci