sql >> Database >  >> RDS >> Sqlserver

Krullende accolades in T-SQL

Dit zijn ODBC-escape-reeksen. Zie Escape-reeksen voor datum, tijd en tijdstempel voor meer details.

Er is ook een vergelijkbare syntaxis voor uniqueidentifiers

SELECT {guid '00000000-0000-0000-0000-000000000000'} ,

evenals procedureaanroepen en enkele andere constructies die op die link worden beschreven.

Met betrekking tot de rest van uw vraag ken ik geen enkele manier om een ​​letterlijk geheel getal te behandelen als een bigint of van een bepaalde bron die alle manieren opsomt om te beïnvloeden hoe letterlijke gegevens door SQL Server worden toegewezen aan datatypes. Hieronder vindt u enkele manieren.

;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

Retourneren

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



  1. Traagheid gevonden wanneer base 64-afbeelding selecteert en codeert uit database

  2. MySQL-weergaven maken en gebruiken

  3. Kolom toevoegen OF verwijderen uit CDC-geactiveerde tabel zonder gegevens te verliezen in SQL Server-database - SQL Server-zelfstudie

  4. Hoe het aantal keren dat een teken voorkomt in een Oracle varchar-waarde te tellen?