在 Microsoft SQL Server 函式中,我將變數宣告為浮點資料型別
Declare @variable1 float, @variable2 float, @variable3 float;
我將以下值存盤在我的變數 1
SET @variable1 = DATALENGTH(@variable2) - DATALENGTH(@variable3);
由于 DATALENGTH 將結果存盤在位元組中。在上述情況下,@variable1 中存盤的結果的資料型別是什么
對這些變數的資料型別有什么影響
我需要將 Length() 功能從 Oracle 遷移到 SQL Server
謝謝您的幫助 !
uj5u.com熱心網友回復:
你的問題標題說...
SQL Server 中的 DATALENGTH() 是否替代 Oracle 中的 LENGTH()
建議您在 Oracle 中有一個作業查詢,您想在 SQL Server 中運行。單獨回答那部分,如下...
- LEN() 將是來自 Oracle 的 LENGTH 的 SQL Server 等效項。
- DATALENGTH 將是來自 Oracle 的 LENGTHB 的 SQL Server 等效項。
兩者都接受輸入作為字串。LEN() 將按字符數為您提供字串的長度,而 DATELENGTH 將按位元組數為您提供字串的長度。例如,對于 nvarchar 資料,您的位元組長度將是字符長度的兩倍。這是因為 nvarhcar 使用 2 個位元組來存盤一個字符,而不是 varchar 的 1 個位元組。
但是,您的示例使用FLOAT資料型別。LEN從表面上看,使用or似乎是可以接受的DATALENGTH,因為該FLOAT值被隱式轉換為字串,并且您會得到您期望的結果。
然而,正如 Jeroen Mostert 指出的那樣,情況可能并非總是如此……
要了解為什么這可能是一個問題,或者至少在沒有顯式轉換的情況下造成不必要的混亂,請考慮 LEN(0.0000001E0),它是 6,因為隱式轉換給出 1e-007。Oracle 中的 LENGTH(0.0000001E0) 為 8。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/439785.html
標籤:sql服务器
