91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SQL Server中怎么實現數據類型轉換

發布時間:2021-08-05 14:46:02 來源:億速云 閱讀:185 作者:Leah 欄目:數據庫

這篇文章將為大家詳細講解有關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列作為主鍵。如下圖所示:

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

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

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

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

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

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 序號=2select * from dbo.Demo where 混合ID='305' and 名稱='INT'select * from dbo.Demo where 混合ID='305'

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

關于SQL Server中怎么實現數據類型轉換就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

丹凤县| 凯里市| 柳江县| 陇川县| 泗水县| 明溪县| 奈曼旗| 深泽县| 阿拉尔市| 曲阳县| 班戈县| 洪江市| 九龙坡区| 永康市| 余庆县| 周宁县| 密山市| 三穗县| 宾川县| 仁布县| 汝州市| 全椒县| 邻水| 西宁市| 莱州市| 巫山县| 江口县| 晋中市| 原阳县| 宣恩县| 从化市| 重庆市| 石柱| 淮北市| 海兴县| 鄂尔多斯市| 上犹县| 太康县| 繁峙县| 漾濞| 鹰潭市|