Что эквивалентно "двойной" таблице Oracle в MS SqlServer?
Что эквивалентно "двойной" таблице Oracle в MS SqlServer?
Это мое Select
:
SELECT pCliente,
'xxx.x.xxx.xx' AS Servidor,
xxxx AS Extension,
xxxx AS Grupo,
xxxx AS Puerto
FROM DUAL;
6 ответов
В 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
в оракуле
select 'sample' from dual
равно
SELECT 'sample'
в sql server
В то время как вам обычно не нужно DUAL
таблицы в SQL Server, как объяснил Жан-Франсуа Савар, мне нужно было подражать 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
Это намного проще. Используйте литеральные значения, чтобы установить типы данных. Поместите имена столбцов в кавычки, если им нужны специальные символы. Пропустите предложение WHERE, если вам нужна 1 строка данных:
SELECT 'XCode' AS XCode
,1 AS XID
,'XName' AS "X Name"
,'YCode' AS YCode
,getDate() AS YID
,'YName' AS "Your Name"
WHERE 1 = 0