2012-07-05 42 views
1

我指的是Java Constant Field Values,並且認爲如果可以使用SQL查詢爲數據類型檢索邊界值(例如數字數據類型爲MIN_VALUE,MAX_VALUE)。使用任何SQL查詢的數據類型範圍值

例如

select 
    int.signed_min_value as int_sgnd_min, 
    int.unsigned_min_value as int_usgnd_min, 
    int.signed_max_value as int_sgnd_max, 
    int.unsigned_max_value as int_usgnd_max, 
    int.storage_bytes as int_bytes 
from dual; 

應所得

+--------------+---------------+--------------+---------------+-----------+ 
| int_sgnd_min | int_usgnd_min | int_sgnd_max | int_usgnd_max | int_bytes | 
+--------------+---------------+--------------+---------------+-----------+ 
| -2147483648 |    0 | 2147483647 | 4294967295 |  4 | 
+--------------+---------------+--------------+---------------+-----------+ 

以上的結果storage and range values defined for MySQL integer data type
MySQL中的其他數據類型存儲要求如定義here

我只給出了一個數字數據類型的例子,但我也期待其他數據類型的可能性。

我知道我們只能使用select列和表達式,但試圖瞭解SQL中是否存在像Java和其他編程語言那樣的工具。

+0

你的意思是SQL Server? – Diego 2012-07-05 14:09:31

+0

@Diego好吧,沒有限制。通用讚賞。 – 2012-07-05 14:12:06

回答

1

如果您的意思是Sql Server,您可以從sys.types表中獲取該信息。如果你這樣做:

select * from sys.types 
where name='int' 

你可以檢查max_length,它表示類型的最大長度(以字節爲單位)。所以int = 4叮咬whihc給你-2^31(-2,147,483,648)到2^31-1(2,147,483,647)

+0

在SQL Server中,如果'name ='date'',我該如何獲取範圍值? AFAIK,Oracle日期範圍從「公元前4712年1月1日」到「公元9999年12月31日」 – 2012-07-05 14:23:44