Return一组常数键值对
Return a constant set of key value pair
假设我有类似下面的东西
SELECT 0 AS 'Key','No' AS 'Value'
UNION
SELECT 1 AS 'Key','YES' AS 'Value'
UNION
SELECT 2 AS 'Key','Maybe' AS 'Value'
....
....
如何使上面的语句更具可读性,以便我可以在单个 select 语句中容纳上面列表中的更多常量 key/value 对?我不想创建 table 变量或创建复杂的 sql 语句。只是一个 select 语句返回一堆常量 key/pair 值。
使用 table 值构造函数。
VALUES ((0,'NO'),(1,'YES'),(2,'MAYBE'))
您可以使用 VALUES
:
SELECT *
FROM (VALUES
(0, 'No'),
(1, 'Yes'),
(2, 'Maybe')
) t([Key], Value)
了解您不想创建 table 变量
我经常使用已接受的答案 +1
只需指出一个 table 变量就可以声明类型和主键
declare @tbl table ([key] tinyint primary key, [value] varchar(12));
insert into @tbl values (1, 'one')
, (2, 'two')
, (3, 'three');
select * from @tbl order by [key];
假设我有类似下面的东西
SELECT 0 AS 'Key','No' AS 'Value'
UNION
SELECT 1 AS 'Key','YES' AS 'Value'
UNION
SELECT 2 AS 'Key','Maybe' AS 'Value'
....
....
如何使上面的语句更具可读性,以便我可以在单个 select 语句中容纳上面列表中的更多常量 key/value 对?我不想创建 table 变量或创建复杂的 sql 语句。只是一个 select 语句返回一堆常量 key/pair 值。
使用 table 值构造函数。
VALUES ((0,'NO'),(1,'YES'),(2,'MAYBE'))
您可以使用 VALUES
:
SELECT *
FROM (VALUES
(0, 'No'),
(1, 'Yes'),
(2, 'Maybe')
) t([Key], Value)
了解您不想创建 table 变量
我经常使用已接受的答案 +1
只需指出一个 table 变量就可以声明类型和主键
declare @tbl table ([key] tinyint primary key, [value] varchar(12));
insert into @tbl values (1, 'one')
, (2, 'two')
, (3, 'three');
select * from @tbl order by [key];