Toto jsou sekvence escape ODBC. Další podrobnosti naleznete v části Escape Sequence pro datum, čas a časové razítko.
Podobná syntaxe existuje také pro jedinečné identifikátory
SELECT {guid '00000000-0000-0000-0000-000000000000'}
,
stejně jako volání procedur a některé další konstrukce podrobně popsané na tomto odkazu.
Pokud jde o zbytek vaší otázky, nejsem si vědom žádného způsobu, jak mít celočíselný literál považován za bigint
nebo jakéhokoli konkrétního zdroje, který uvádí všechny způsoby ovlivnění toho, jak jsou literály přiřazovány datovým typům SQL Serverem. Některé způsoby jsou uvedeny níže.
;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
Vrátí
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