--/*

創(chuàng)新互聯(lián)是一家專業(yè)從事成都網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計的品牌網(wǎng)絡(luò)公司。如今是成都地區(qū)具影響力的網(wǎng)站設(shè)計公司,作為專業(yè)的成都網(wǎng)站建設(shè)公司,創(chuàng)新互聯(lián)依托強大的技術(shù)實力、以及多年的網(wǎng)站運營經(jīng)驗,為您提供專業(yè)的成都網(wǎng)站建設(shè)、營銷型網(wǎng)站建設(shè)及網(wǎng)站設(shè)計開發(fā)服務(wù)!
--unicode編碼范圍:
--漢字:[0x4e00,0x9fa5](或十進制[19968,40869])
--數(shù)字:[0x30,0x39](或十進制[48,?57])
--小寫字母:[0x61,0x7a](或十進制[97,?122])
--大寫字母:[0x41,0x5a](或十進制[65,?90])
--根據(jù)編碼范圍來判斷
--*/
--創(chuàng)建
create?proc?p_A_VIC
as
declare?@count?int
declare?@i?int
declare?@text?nvarchar(50)
set?@i?=?0
set?@count?=?(select?COUNT?(*)?from?table??)
while(@i??@count?)
begin
set?@i?+=1
--sid代表有一定循環(huán)規(guī)律的,若是無序的可以添加一個序列(Row_Number()?OVER?---)。
--select?*?from?(SELECT?*,?Row_Number()?OVER?(?ORDER?BY?[sid]?)?num?FROM?s--table?)?as?s?where?num?=?3
set?@text?=?(select??a?from?table??where?[sid]?=?@i)
if?unicode(@text)?between?19968?And?40869?or?unicode(@text)?between?97?And?122?or?unicode('a')?between?65?And?90
begin
print?0
end
else
print?@text
end
--執(zhí)行
exec??p_A_VIC
創(chuàng)建函數(shù)
create?FUNCTION?[dbo].[Dec2Bin](@Dec?INT,?@StrLen?INT)
RETURNS?VARCHAR(31)?--?INT型,4字節(jié),正數(shù)轉(zhuǎn)為二進制字符串最多31位
AS
BEGIN
DECLARE?@BinStr?AS?VARCHAR(31)??????--?二進制表示的字符串
DECLARE?@Div2?AS?INT????????????????--?商
DECLARE?@Mod2?AS?INT????????????????--?模/余數(shù)
IF?@Dec??0
RETURN?'NULL'??????????????--?不支持負數(shù)的轉(zhuǎn)換
SET?@Div2?=?@Dec?/?2?
SET?@Mod2?=?@Dec?%?2?
SET?@BinStr?=?''
WHILE?@Div2??0
BEGIN
SET?@BinStr?=?CAST(@Mod2?AS?CHAR(1))?+?@BinStr
SET?@Dec?=?@Dec?/?2
SET?@Div2?=?@Dec?/?2
SET?@Mod2?=?@Dec?%?2
END;
SET?@BinStr?=?CAST(@Mod2?AS?CHAR(1))?+?@BinStr?--?至此,已完成十進制到二進制的轉(zhuǎn)換
IF?@StrLen??LEN(@BinStr)????--?如果用戶指定的長度大于實際長度,則需要左邊補0
BEGIN
IF?@StrLen??31????--?返回的長度,最長為32
SET?@StrLen?=?31
DECLARE?@ZeroStr?VARCHAR(31)????--?需要補充的"0000..."
DECLARE?@OffsetLen?TINYINT???????--?需要補充幾個"0"
SET?@ZeroStr?=?''
SET?@OffsetLen?=?@StrLen?-?LEN(@BinStr)
WHILE??@OffsetLen??0
BEGIN
SET?@ZeroStr?=?@ZeroStr?+?'0'
SET?@OffsetLen?=?@OffsetLen?-?1
END
SET?@BinStr?=?@ZeroStr?+?@BinStr
END
RETURN?@BinStr
END
調(diào)用函數(shù)
select?[dbo].[Dec2Bin](3,8)
其中3是要轉(zhuǎn)換的數(shù)字,8是最后二進制的長度,不足位的前補0
select?Convert(int,0xF)?????????????????????????????--15
select?Convert(numeric(18,2),0x030100017D000000)????--12.50
--10進制轉(zhuǎn)換為2,8,16進制
Create?Function?DecTox(@A?int,@Type?Varchar(3))
Returns?Varchar(100)
As
Begin
--從右到左,每一位乘上基數(shù)的i-1次方的和
Declare?@Rst?varchar(100)=''???--保存結(jié)果
Declare?@JS?int?????????????--轉(zhuǎn)換基數(shù)
Declare?@YS?int?????????????--余數(shù)
Set?@JS=Case?@Type?
When?'Bin'?Then?2???
When?'Ocx'?Then?8
When?'Hex'?Then?16
Else?Null?End
While?@A0
Begin
Set?@YS=@A%@JS
Set?@Rst=Case?@YS
When?10?Then?'A'
When?11?Then?'B'??????
When?12?Then?'C'
When?13?Then?'D'
When?14?Then?'E'
When?15?Then?'F'
Else?Convert(Varchar(2),@YS)
End+@Rst
Set?@A=Convert(int,@A/@JS)??
End?????
return?@Rst???
End
--2,8,16進制轉(zhuǎn)換為10進制
Create?Function?fn_xToDec1(@A?Varchar(50),@Type?Varchar(3))
Returns?int
As
Begin
--從右到左,每一位乘上基數(shù)的i-1次方的和
Declare?@Rst?int=0??????????--保存結(jié)果
Declare?@JS?int?????????????--轉(zhuǎn)換基數(shù)
Declare?@I?int??????????????--字符串位置
Declare?@J?int??????????????
Set?@JS=Case?@Type?
When?'Bin'?Then?2???
When?'Ocx'?Then?8
When?'Hex'?Then?16
Else?Null?End
Set?@I=Len(@A)??????????????--從最后一個開始向前截取
Set?@J=0
While?@I0
Begin
Set?@Rst=@Rst+Case?substring(@A,@I,1)?
When?'A'?Then?10
When?'B'?Then?11
When?'C'?Then?12
When?'D'?Then?13
When?'E'?Then?14
When?'F'?Then?15?
Else?substring(@A,@I,1)?
End*power(@JS,@J)
Set?@J=@J+1
Set?@I=@I-1?
End?????
return?@Rst???
End
SQLSERVER 里的 DECIMAL(5,2)的意思:最大5位數(shù)字,其中兩位小數(shù)的數(shù)字類型。
Decimal 數(shù)據(jù)類型Decimal 變量存儲為 96 位(12 個字節(jié))無符號的整型形式,并除以一個 10 的冪數(shù)。
這個變比因子決定了小數(shù)點右面的數(shù)字位數(shù),其范圍從 0 到 28。變比因子為 0(沒有小數(shù)位)的情形下,最大的可能值為 +/-79,228,162,514,264,337,593,543,950,335。
而在有 28 個小數(shù)位的情況下,最大值為 +/-7.9228162514264337593543950335,而最小的非零值為 +/-0.0000000000000000000000000001。
擴展資料
DECIMAL在其他開發(fā)工具的用法:
1、powerBuilder。
直接在編寫控件的時候使用就可以了。比如:當(dāng)編寫一個Clicked事件腳本時就可以decimal r這樣使用。
2、Visual Studio。
在一個浮點類型的值后加一個大寫或小寫的M,則編輯器會認為這個浮點類型的值是一個Decimal類型。這種128位高精度十進制數(shù)表示法通常用在財務(wù)計算中。
參考資料來源:百度百科-Decimal
我給你看SQL 對DECIMAL的官方定義:
decimal[(p[, s])] 和 numeric[(p[, s])]
定點精度和小數(shù)位數(shù)。使用最大精度時,有效值從 - 10^38 +1 到 10^38 - 1。decimal 的 SQL-92 同義詞是 dec 和 dec(p, s)。
p(精度)
指定小數(shù)點左邊和右邊可以存儲的十進制數(shù)字的最大個數(shù)。精度必須是從 1 到最大精度之間的值。最大精度為 38。
s(小數(shù)位數(shù))
指定小數(shù)點右邊可以存儲的十進制數(shù)字的最大個數(shù)。小數(shù)位數(shù)必須是從 0 到 p 之間的值。默認小數(shù)位數(shù)是 0,因而 0 = s = p。最大存儲大小基于精度而變
。很明確的,decimal(3,2)的定義中,3表示一共是三位數(shù),包括整數(shù)部分和小數(shù)部分,2表示有兩位小數(shù)。所以就出錯了。例如999.99,應(yīng)該寫成decimal(5,2)的形式。
把數(shù)據(jù)類型float改為 numeric(18,4)
注:numeric(p,s)p(精度)和s(小數(shù)位數(shù))。p指定小數(shù)點左邊和右邊可以存儲的十進制數(shù)字的最大個數(shù),p必須是從?1到38之間的值。s指定小數(shù)點右邊可以存儲的十進制數(shù)字的最大個數(shù),s必須是從0到p之間的值,默認小數(shù)位數(shù)是0
網(wǎng)頁標題:sqlserver十進制,sql 二進制轉(zhuǎn)十進制
地址分享:http://chinadenli.net/article29/dsehjjh.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設(shè)計公司、、微信小程序、Google、云服務(wù)器、網(wǎng)站設(shè)計
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)