本文主要介紹sqlserver類型轉(zhuǎn)換(sql server數(shù)據(jù)轉(zhuǎn)換),下面一起看看sqlserver類型轉(zhuǎn)換(sql server數(shù)據(jù)轉(zhuǎn)換)相關資訊。
在sql server的日常函數(shù)、存儲過程和sql語句中,經(jīng)常會用到不同數(shù)據(jù)類型的轉(zhuǎn)換。在sql server中,有兩種類型的數(shù)據(jù)轉(zhuǎn)換:一種是顯式數(shù)據(jù)轉(zhuǎn)換,另一種是隱式數(shù)據(jù)轉(zhuǎn)換。1顯式轉(zhuǎn)換顯示轉(zhuǎn)換是將一種數(shù)據(jù)類型的表達式轉(zhuǎn)換為另一種數(shù)據(jù)類型。casting: casting(表示data _ type)transformation:transformation(data _ type {(length)},{}} expression,style參數(shù)expression是microsoft sql server的任何有效表達式。數(shù)據(jù)類型目標系統(tǒng)提供的data_type不能是用戶定義的數(shù)據(jù)類型。2隱式轉(zhuǎn)換隱式轉(zhuǎn)換是不可見的用戶,由sql server引擎自動處理。隱式轉(zhuǎn)換自動將數(shù)據(jù)從一種數(shù)據(jù)類型轉(zhuǎn)換為另一種數(shù)據(jù)類型。例如,如果一個對象變量是int變量,那么在比較之前,smallint變量對于int變量是隱式的。在轉(zhuǎn)換數(shù)據(jù)類型時,某些隱式和顯式數(shù)據(jù)類型不支持從一個sql server對象轉(zhuǎn)換到另一個sql server對象。例如,nchar值不能轉(zhuǎn)換為圖像的值。nchar只能顯式轉(zhuǎn)換為二進制,不支持其隱式二進制。數(shù)據(jù)可以轉(zhuǎn)換為nvarchar顯式或隱式。3隱式轉(zhuǎn)換的風險隱蔽轉(zhuǎn)換有時候非常方便,可以簡化sql腳本,但是也產(chǎn)生了潛在的風險。它可能發(fā)生在劇本的開頭,但它不會。;過一段時間后,不一定會犯錯誤。這是一個真實項目的例子。sql server 2008中有一個表,它從兩個不同的數(shù)據(jù)表中提取數(shù)據(jù)。這些數(shù)據(jù)表屬于不同的系統(tǒng),鍵的類型也不一樣。一個是int,一個是guid。這兩個最初的想法可以轉(zhuǎn)換成存儲字符類型。所以我們在nvarchar(50)表中設置一個id列作為主鍵。如下圖所示:的guid值還沒有開始拉取由int類型轉(zhuǎn)換的數(shù)據(jù),所以sql腳本正常,但是突然在錯誤的nvarchar值中運行失敗,數(shù)據(jù)類型為 4c 185367-f004-41fe-8a0a-db4e 819 b1 ff 2 ;變成。如下圖:腳本中,sql的執(zhí)行如下:select dbo。演示,id = 305。主鍵中的數(shù)據(jù)有guid轉(zhuǎn)換的字符類型和int轉(zhuǎn)換的字符串,示例數(shù)據(jù)如下:但如果執(zhí)行下面的sql,會正常執(zhí)行:select dbo。演示,id = 305和混合名稱= 里面的選擇dbo。演示,混合id = 305,序列號=列號= 2選擇dbo。演示,id = 305 和name = int選擇dbo。演示,id = 305.結(jié)果如下:以上錯誤的結(jié)果應該是:select dbo。演示,混合id = 305。在執(zhí)行過程中,sql server會將nvarchar類型隱藏為int類型。如果沒有guid類型,字符數(shù)據(jù)轉(zhuǎn)換是正常的。如果有,那就是。這就是本文的全部內(nèi)容,希望能對你轉(zhuǎn)換sql server數(shù)據(jù)類型有所幫助。
了解更多sqlserver類型轉(zhuǎn)換(sql server數(shù)據(jù)轉(zhuǎn)換)相關內(nèi)容請關注本站點。