一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Sql Server - SQL Server數據類型轉換方法

SQL Server數據類型轉換方法

2020-05-03 15:49JackWang-CUMT Sql Server

這篇文章主要為大家詳細介紹了SQL Server數據類型轉換方法,感興趣的小伙伴們可以參考一下

SQL Server日常的函數、存儲過程和SQL語句中,經常會用到不同數據類型的轉換。在SQL Server有兩種數據轉換類型:一種是顯性數據轉換;另一種是隱性數據轉換。下面分別對這兩種數據類型轉換進行簡要的說明:

1 顯式轉換

顯示轉換是將某種數據類型的表達式顯式轉換為另一種數據類型。常用的是CAST 和 CONVERT 函數。

 CAST: CAST ( expression AS data_type )
 CONVERT: CONVERT (data_type[(length)], expression [, style])

參數 expression 是任何有效的 Microsoft SQL Server表達式。data_type 目標系統所提供的數據類型,不能使用用戶定義的數據類型。

2 隱性轉換

隱性轉換對于用戶是不可見的,由SQL Server 引擎自動處理。 隱性轉換自動將數據從一種數據類型轉換成另一種數據類型。例如,如果一個 smallint 變量和一個 int 變量相比較,這個 smallint 變量在比較前即被隱性轉換成 int 變量。 當從一個 SQL Server 對象的數據類型向另一個轉換時,一些隱性和顯式數據類型轉換是不支持的。例如,nchar 數值根本就不能被轉換成 image 數值。nchar 只能顯式地轉換成 binary,隱性地轉換到 binary 是不支持的。nchar 可以顯式地或者隱性地轉換成 nvarchar。

3 隱性轉換的風險

隱性轉換有的時候非常方便,可以簡化SQL 腳本,但是這里面也孕育著潛在的風險,可能會出現在腳本一開始運行的時候都是正常的,但卻某一個時間點之后,程序莫名出現錯誤。下面舉一個現實項目中的例子來說明。在SQL Server 2008中有一個表,需要從兩個不同的數據表中拉取數據,由于這兩個數據表屬于不同的系統,其主鍵類型是不同的,一個是int類型,一個是GUID,一開始想著這兩個都可以轉換成字符類型進行存儲。所以就在表中建立一個nvarchar(50)的混合ID列作為主鍵。如下圖所示:

SQL Server數據類型轉換方法

一開始拉取的數據并未有GUID的值,都是INT類型轉換過來的數據,所以SQL腳本運行的正常,但是突然某一次運行時,出現了“在將 nvarchar 值 '4C185367-F004-41FE-8A0A-DB4E819B1FF2' 轉換成數據類型 int 時失敗。”的錯誤。如下圖所示:

SQL Server數據類型轉換方法

定位到腳本,執行的SQL如下:

select * from dbo.Demo where 混合ID=305

其中主鍵中的數據有GUID轉換的字符型,也有INT轉換的字符串,示例數據如下:

SQL Server數據類型轉換方法

但是如果執行下面的SQL,則都是正常執行:

?
1
2
3
4
5
6
7
8
9
select * from dbo.Demo where 混合ID=305 and 名稱='INT'
 
select * from dbo.Demo where 混合ID=305 and 序號='2'
 
select * from dbo.Demo where 混合ID=305 and 序號=2
 
select * from dbo.Demo where 混合ID='305' and 名稱='INT'
 
select * from dbo.Demo where 混合ID='305'

結果如下:

SQL Server數據類型轉換方法

出現上述錯誤的結果應該是這樣的:

select * from dbo.Demo where 混合ID=305在執行時,SQL Server會將nvarchar類型的隱性轉換成int類型,如果數據中沒有GUID類型的字符,則轉換正常,如果有,當進行GUID字符到INT的隱性轉換時,則轉換失敗。

SQL Server數據類型轉換方法

以上就是本文的全部內容,希望對大家進行SQL Server數據類型轉換有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美高清milf在线播放 | 免费观看www视频 | 国产盗摄美女嘘嘘视频 | 亚洲人成网站在线观看妞妞网 | 猛男壮男受bl爽哭了高h | piss美女厕所小便 | 97国产蝌蚪视频在线观看 | 欧美交换乱理伦片120秒 | 成品人视频w免费观看w | 丝袜性爱| 亚洲社区在线观看 | 扒开胸流出吃奶 | 久久综合狠狠综合久久综合88 | 国产精品视频一区二区三区不卡 | 精品久久久久久久国产潘金莲 | 国产永久一区二区三区 | 韩国三级在线观看 完整版 韩国三级视频网站 | 久久永久影院免费 | 亚洲一区二区三区不卡在线播放 | 荡女人人爱 | 倩女还魂在线观看完整版免费 | 色菇凉天天综合网 | 五月激情丁香婷婷综合第九 | 久草热8精品视频在线观看 久草草在线视视频 | 99久久精品免费看国产一区二区 | 成人免费播放器 | 欧美视 | 久久se精品一区二区国产 | 五月婷婷丁香色 | 午夜国产小视频 | 91制片厂制作果冻传媒123 | 日韩aⅴ在线观看 | 女人用粗大自熨喷水在线视频 | 2012年中文字幕在线看 | 男人操女生| zol中关村在线官网 yy6080欧美三级理论 | 黑人开嫩苞 | 粉嫩极品国产在线观看免费 | 1024国产精品视频观看 | 天生奶水1v1高h | 欧美日韩视频在线一区二区 |