sqlserver十进制,sql 二进制转十进制

sqlserver如何判断字段中是否含有汉字?

--/*

创新互联是一家专业从事成都网站设计、成都网站建设、网页设计的品牌网络公司。如今是成都地区具影响力的网站设计公司,作为专业的成都网站建设公司,创新互联依托强大的技术实力、以及多年的网站运营经验,为您提供专业的成都网站建设、营销型网站建设及网站设计开发服务!

--unicode编码范围:

--汉字:[0x4e00,0x9fa5](或十进制[19968,40869])

--数字:[0x30,0x39](或十进制[48, 57])

--小写字母:[0x61,0x7a](或十进制[97, 122])

--大写字母:[0x41,0x5a](或十进制[65, 90])

--根据编码范围来判断

--*/

--创建

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代表有一定循环规律的,若是无序的可以添加一个序列(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

--执行

exec  p_A_VIC

sql Server如何编写函数实现把十进制数转换为二进制数?求大神相助!!

创建函数

create FUNCTION [dbo].[Dec2Bin](@Dec INT, @StrLen INT)

RETURNS VARCHAR(31) -- INT型,4字节,正数转为二进制字符串最多31位

AS

BEGIN

DECLARE @BinStr AS VARCHAR(31)      -- 二进制表示的字符串

DECLARE @Div2 AS INT                -- 商

DECLARE @Mod2 AS INT                -- 模/余数

IF @Dec  0

RETURN 'NULL'              -- 不支持负数的转换

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 -- 至此,已完成十进制到二进制的转换

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

调用函数

select [dbo].[Dec2Bin](3,8)

其中3是要转换的数字,8是最后二进制的长度,不足位的前补0

如何将sql 中十六进制转换十进制

select Convert(int,0xF)                             --15

select Convert(numeric(18,2),0x030100017D000000)    --12.50

--10进制转换为2,8,16进制

Create Function DecTox(@A int,@Type Varchar(3))

Returns Varchar(100)

As

Begin

--从右到左,每一位乘上基数的i-1次方的和

Declare @Rst varchar(100)=''   --保存结果

Declare @JS int             --转换基数

Declare @YS int             --余数

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进制转换为10进制

Create Function fn_xToDec1(@A Varchar(50),@Type Varchar(3))

Returns int

As

Begin

--从右到左,每一位乘上基数的i-1次方的和

Declare @Rst int=0          --保存结果

Declare @JS int             --转换基数

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) 是什么意思

SQLSERVER 里的 DECIMAL(5,2)的意思:最大5位数字,其中两位小数的数字类型。

Decimal 数据类型Decimal 变量存储为 96 位(12 个字节)无符号的整型形式,并除以一个 10 的幂数。

这个变比因子决定了小数点右面的数字位数,其范围从 0 到 28。变比因子为 0(没有小数位)的情形下,最大的可能值为 +/-79,228,162,514,264,337,593,543,950,335。

而在有 28 个小数位的情况下,最大值为 +/-7.9228162514264337593543950335,而最小的非零值为 +/-0.0000000000000000000000000001。

扩展资料

DECIMAL在其他开发工具的用法:

1、powerBuilder。

直接在编写控件的时候使用就可以了。比如:当编写一个Clicked事件脚本时就可以decimal r这样使用。

2、Visual Studio。

在一个浮点类型的值后加一个大写或小写的M,则编辑器会认为这个浮点类型的值是一个Decimal类型。这种128位高精度十进制数表示法通常用在财务计算中。

参考资料来源:百度百科-Decimal

SqlServer05的decimal(3,2)字段存100时为什么提示超出范围错误?

我给你看SQL 对DECIMAL的官方定义:

decimal[(p[, s])] 和 numeric[(p[, s])]

定点精度和小数位数。使用最大精度时,有效值从 - 10^38 +1 到 10^38 - 1。decimal 的 SQL-92 同义词是 dec 和 dec(p, s)。

p(精度)

指定小数点左边和右边可以存储的十进制数字的最大个数。精度必须是从 1 到最大精度之间的值。最大精度为 38。

s(小数位数)

指定小数点右边可以存储的十进制数字的最大个数。小数位数必须是从 0 到 p 之间的值。默认小数位数是 0,因而 0 = s = p。最大存储大小基于精度而变

。很明确的,decimal(3,2)的定义中,3表示一共是三位数,包括整数部分和小数部分,2表示有两位小数。所以就出错了。例如999.99,应该写成decimal(5,2)的形式。

关于sqlserver数据类型的问题

把数据类型float改为 numeric(18,4)

注:numeric(p,s)p(精度)和s(小数位数)。p指定小数点左边和右边可以存储的十进制数字的最大个数,p必须是从 1到38之间的值。s指定小数点右边可以存储的十进制数字的最大个数,s必须是从0到p之间的值,默认小数位数是0


网站题目:sqlserver十进制,sql 二进制转十进制
本文URL:http://azwzsj.com/article/dsehjjh.html