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

前端 未结 4 2010
别那么骄傲
别那么骄傲 2021-01-01 08:10

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

This is my Select:

SELECT pCliente,
       \'xxx.x.xxx.xx\' AS Serv         


        
相关标签:
4条回答
  • 2021-01-01 08:47

    You do not need DUAL in mssql server

    in oracle

    select 'sample' from dual
    

    is equal to

    SELECT 'sample'
    

    in sql server

    0 讨论(0)
  • 2021-01-01 09:01

    While you usually don't need a DUAL table in SQL Server as explained by Jean-François Savard, I have needed to emulate DUAL for syntactic reasons in the past. Here are three options:

    Create a DUAL table or view

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

    Once created, you can use it just as in Oracle.

    Use a common table expression or a derived table

    If you just need DUAL for the scope of a single query, this might do as well:

    -- Common table expression
    WITH DUAL(DUMMY) AS (SELECT 'X')
    SELECT * FROM DUAL
    
    -- Derived table
    SELECT *
    FROM (
      SELECT 'X'
    ) DUAL(DUMMY)
    
    0 讨论(0)
  • 2021-01-01 09:03

    In sql-server, there is no dual you can simply do

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

    However, if your problem is because you transfered some code from Oracle which reference to dual you can re-create the table :

    CREATE TABLE DUAL
    (
    DUMMY VARCHAR(1)
    )
    GO
    INSERT INTO DUAL (DUMMY)
    VALUES ('X')
    GO
    
    0 讨论(0)
  • 2021-01-01 09:04

    In SQL Server there is no dual table. If you want to put a WHERE clause, you can simple put it directly like this:

    SELECT 123 WHERE 1<2

    I think in MySQL and Oracle they need a FROM clause to use a WHERE clause.

    SELECT 123 FROM DUAL WHERE 1<2

    0 讨论(0)
提交回复
热议问题