繁体   English   中英

Transact-SQL中是否有表格文字?

[英]Are there Table Literals in Transact-SQL?

根据http://www.storytotell.org/blog/2008/11/14/literal-tables-and-updates-with-joins-in-sql.html

以下内容有效:

SELECT * 
        FROM VALUES 
        ('Lisp', 50, true), 
        ('Scheme', 30, true), 
        ('Clojure', 1, true) 
        AS languages (name, age, lispy)

但它似乎不起作用。

我能得到的最好的是

With languages (name, age, lispy) as
(
    select 'Lisp', 50, 'true' union all 
    select 'Scheme', 30, 'true' union all 
    select 'Clojure', 1, 'true'
)
select * from languages

它使用公用表表达式并不是很整洁。

在t-sql中有没有类似于表格的文字?

如果你有SQL Server 2008,你可以在允许派生表的任何地方使用它,尽管它只允许你拥有多达1000行: http//msdn.microsoft.com/en-us/library/dd776382(SQL.100 )的.aspx

这是文档中的一个示例( http://msdn.microsoft.com/en-us/library/ms177634(SQL.100).aspx ):

SELECT *
FROM (
    VALUES (1, 2),
           (3, 4),
           (5, 6),
           (7, 8),
           (9, 10)
) AS MyTable(a, b)

请注意VALUES子句周围的括号。

我的理解是SELECT * FROM VALUES ...是标准SQL,但微软的T-SQL不支持它。 据我所知,T-SQL仅支持INSERT语句中的VALUES ... (即便如此,从SQL Server 2008开始只支持多个值...)

您可以在此处查看SELECT语句的FROM子句的语法: http//msdn.microsoft.com/en-us/library/ms177634%28v=SQL.100%29.aspx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM