表達式:是常量、變量、列或函數等與運算符的任意組合。以下參數中表達式類型是指表達式經運算后返回的值的類型
數據類型轉換函數
(以下兩種函數功能類似,但是convert在進行日期轉換時還提供了豐富的樣式,cast只能進行普通的日期轉換)
函數名稱 | 參數 | 示例 | 描述 |
convert | (數據類型[(長度)],表達式[,樣式]) | select convert(nvarchar,123) 返回123 select N'年齡:'+convert(nvarchar,23) 返回 年齡:23(注意:如果想要在結果中正確顯示中文需要在給定的字符串前面加上N,加N是為了使數據庫識別 Unicode字符) select convert(nvarchar ,getdate()) 返回04 28 2009 10:21PM select convert(nvarchar ,getdate(),101) 返回 select convert(nvarchar ,getdate(),120) 返回2009-04-28 12:22:21 select convert(nvarchar(10) ,getdate(),120) 返回 | 將一種數據類型的表達式顯式轉換為另一種數據類型的表達式。 長度:如果數據類型允許設置長度,可以設置長度,例如 varchar(10) 樣式:用于將日期類型數據轉換為字符數據類型的日期格式的樣式。見下表 |
cast | (表達式 as 數據類型[(長度)]) | select cast(123 as nvarchar)返回123 select N'年齡:'+cast(23 as nvarchar) 返回 年齡:23 | 將一種數據類型的表達式顯式轉換為另一種數據類型的表達式。 |
日期類型數據轉換為字符數據類型的日期格式的部分樣式表
不帶世紀數位 (yy) | 帶世紀數位 (yyyy) | 標準 | 輸入/輸出 |
- | 0 或 100 | 默認設置 | mon dd yyyy hh:miAM(或 PM) |
1 | 101 | 美國 | mm/dd/yyyy |
2 | 102 | ANSI | yy.mm.dd |
3 | 103 | 英國/法國 | dd/mm/yy |
4 | 104 | 德國 | dd.mm.yy |
5 | 105 | 意大利 | dd-mm-yy |
| 120 | ODBC 規范 | yyyy-mm-dd hh:mi:ss(24h) |
當兩個不同數據類型的表達式用運算符組合后,數據類型優先級規則指定將優先級較低的數據類型優先轉換為優先級較高的數據類型。 如果此轉換不是所支持的隱式轉換,則返回錯誤。 當兩個操作數表達式具有相同的數據類型時,運算的結果便為該數據類型。如果需要把優先級高的數據類型轉換為優先級低的數據類型時需要使用數據類型轉換函數進行顯示轉換。
SQL Server 2005 對數據類型使用以下優先級順序(先高后低):
1、用戶定義數據類型(最高)2、sql_variant 3、xml 4、datetime 5、smalldatetime 6、float 7、real 8、decimal 9、money 10、smallmoney 11、bigint 12、int 13、smallint 14、tinyint 15、bit 16、ntext 17、text 18、image 19、timestamp 20、uniqueidentifier
21、nvarchar(包括 nvarchar(max))22、nchar 23、varchar (包括 varchar(max))24、char 25、varbinary(包括 varbinary(max))26、binary(最低)