sql - T-SQL 中的大括号

标签 sql sql-server tsql syntax

我遇到了以下 t-sql:

SELECT {d'9999-12-31'}

返回9999-12-31 00:00:00.000

这似乎是将字符串文字的类型转换为DATETIME。我找不到有关此语法的任何文档,我想知道是否有任何变化,例如,如果我有一个文字 1 但想用 BIGINT 表示它> 不使用 CONVERT()/CAST()

任何人都可以提供有关此语法的更多信息吗?谢谢。

最佳答案

这些是 ODBC 转义序列。请参阅Date, Time, and Timestamp Escape Sequences了解更多详情。

唯一标识符也有类似的语法

选择{guid'00000000-0000-0000-0000-000000000000'}

以及该链接中详细介绍的过程调用和其他一些构造。

关于你问题的其余部分,我不知道有什么方法可以将整数文字视为 bigint 或列出影响文字的所有方式的任何特定资源由 SQL Server 分配的数据类型。下面是一些方法。

;WITH cte(thing) AS
(
SELECT CAST(1 AS SQL_VARIANT) UNION ALL
SELECT $1 UNION ALL
SELECT 1e0 UNION ALL
SELECT 1.0000 UNION ALL
SELECT 2147483648 UNION ALL 
SELECT {ts '2011-09-15 01:23:56.123'}  UNION ALL
SELECT {d '2011-09-15'} UNION ALL
SELECT { t '13:33:41' }  UNION ALL
SELECT {guid '00000000-0000-0000-0000-000000000000'} UNION ALL
SELECT 'Foo' UNION ALL
SELECT N'Foo'
)
SELECT thing, 
       sql_variant_property(thing,'basetype') AS basetype,
       sql_variant_property(thing,'precision') AS precision, 
       sql_variant_property(thing,'scale') AS scale, 
       sql_variant_property(thing,'maxlength') AS maxlength
FROM cte

返回

thing                          basetype            precision   scale  maxlength
------------------------------ ------------------- ----------- ------ ---------
1                              int                 10          0      4
1.00                           money               19          4      8
1                              float               53          0      8
1.0000                         numeric             5           4      5
2147483648                     numeric             10          0      5
2011-09-15 01:23:56.123        datetime            23          3      8
2011-09-15 00:00:00.000        datetime            23          3      8
2011-09-15 13:33:41.000        datetime            23          3      8
00000000-0000-0000-0000-000000 uniqueidentifier    0           0      16
Foo                            varchar             0           0      3
Foo                            nvarchar            0           0      6

关于sql - T-SQL 中的大括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7428538/

相关文章:

.net - 将 DBML 导出为 SQL 脚本

SQL 查询用于在 SQL Server 中生成类似输出查询相关表的矩阵

tsql - 如何在 SQL 中生成随机字符串

sql-server - 频繁删除后需要重组/重建索引吗?

sql - 如何在 SQL Server 2008 中创建宽表?它的使用限制是什么?

mysql - 根据更新结果更新数据库表

SQL 查找组中的连续数字

mysql sql case语句对于不同的条件给出相同的值

sql - Postgresql to_char 添加字符到日期

sql-server - 无法在 WSO2 数据服务服务器上加载 SQL Server 的驱动程序