转自:http://www.maomao365.com/?p=6227

 
摘要:
下文陈诉使用round
sql函数,对数值型数据开展舍入操作

试验遇到:sqlserver 二〇一〇

摘要:
下文叙述使用sql脚本的情势剖断字符串为大小写的方法分享,如下所示
尝试际遇:sqlserver 2008 Odyssey2
贯彻思路:
将字符串调换为大写或小写然后退换为二进制编码,
下一场和源字符串做比较。

初稿地址:http://www.maomao365.com/?p=7307

摘要:澳门皇冠金沙网站,

转自:


摘要:

下文将创建二个isnumber验证整型的函数,供在sql脚本中做数值判断,如下所示:


/*
例:字符串大小写判断方法分享
*/
declare @str varchar(100)
set @str ='www.maomao365.com'
--------------------------------------------------------------
if convert(varbinary,@str) = convert(varbinary,lower(@str)) 
begin
print N'字符串都为小写!'
end
else if convert(varbinary,@str) = convert(varbinary,upper(@str)) 
begin
print N'字符串都为大写!'
end
else 
begin
print N'字符串都为大小混合!'
end

 
 以前分割字符串时,都采纳相近split函数的方法管理,下文分享风流倜傥种对有规律的字符串的相间情势,

例:
落到实处原理:判别 是还是不是含有特殊字符,是或不是全部为0-9的自然数组成
 

近年来吸收接纳客户须要,需对数值型数据,无论后边数据多少,直接开展舍入操作,搜索枯肠,终于开采了round函数能够满足此操作。

round函数舍入天性介绍:
round语法介绍:

原稿地址:http://www.maomao365.com/?p=7358

 
 即:1.行使replace函数,将字符串产生合规的xml格式串

CREATE FUNCTION dbo.check_number
(
/*验证一字符串类型是否为整型数值类型*/
@checkTmp VARCHAR(100)
)
RETURNS BIT
BEGIN
DECLARE @tmp BIT
IF LEFT(@checkTmp, 1) = '-'
SET @checkTmp = SUBSTRING(@checkTmp, 2, LEN(@checkTmp))
IF (PATINDEX('%[^0-9-]%', @checkTmp) = 0
AND CHARINDEX('-', @checkTmp) <= 1
AND @checkTmp NOT IN ('.', '-', '+', '^')
AND LEN(@checkTmp)>0
AND @checkTmp NOT LIKE '%-%')
SET @tmp = 1
ELSE
SET @tmp = 0
RETURN @tmp
END
GO

/*数据验证*/
SELECT '878' [测试数值],dbo.check_number('999') [测试返回值];
SELECT 'testData' [测试数值],dbo.check_number('abc') [测试返回值];
SELECT '8-8' [测试数值],dbo.check_number('9+9') [测试返回值];
SELECT '8.9' [测试数值],dbo.check_number('$9.9') [测试返回值];
SELECT 'maomao365.com' [测试数值],dbo.check_number('maomao365.com') [测试返回值];
go
drop function check_number

round(数听有名式,长度[,操作方式])

参数表达:
数量表明式:
选择八个tinyint、int、bigint、decimal、numeric、money、smallmoney、float、real
长度:
此参数须为tinyint int smallint类型
round函数舍入的精度
操作办法:
此参数须为tinyint int smallint类型

 

     
 2.利用xml.value的方法赢得内定的字符串音信

 

缺省值:为0,倘使输入任何值,则将截断“数据表明式”

重回值表明:
tinyint返回int
int 返回int
bigint 返回bigint
decimal numberic 返回decimal numberic
money smallmoney返回money

    如下所示:

float real 返回float

<span style=”color:red;”>
注意事项:
当”长度”为正数时,则将小数点后舍入的位数
当”长度”为负数时,则将小数点前舍入的位数
</span>
 —————————————————–
round应用举例:

SELECT ROUND(8989.3652, 2), --小数位后保留2位,四舍五入
ROUND(8989.3652, -2),--小数位前舍入2位,四舍五入
---小数位全部舍入,四舍五入
ROUND(8956.34, 0),ROUND(8956.65, 0),ROUND(8956.25, 0), 
---截断数据舍入位置后的数据
ROUND(16081.83,0,-2), ROUND(16081.83,0,1), ROUND(16081.83,0,5),
ROUND(16081.835,2,8), ROUND(16081.836,-2,6), ROUND(16081.83,-2,7)
go

---例:sql取消四舍五入方法分享
---丢失小数位后两位,并不进行四舍五入操作
select round(8989.999,2,9)

 

    实验景况:sqlserver 2009 宝马X52  

--例:
-----获取下面字符串中中括号中的内容
-----我们可以将下列规则的字符串采用replace替换为XML格式的字符串,然后采用xml select获取相关信息
DECLARE @stringInfo   VARCHAR(MAX) ='1:[猫猫小屋],2:[字符串分割],3:[sql教程博客]'
      , @q VARCHAR(3)   =3;  ---获取第三个分割符中的信息

declare @xmlInfo xml ;

set @stringInfo = '<xmlInfo keyId ="'+@stringInfo;
set @stringInfo = REPLACE(@stringInfo, '[', '" value="');
set @stringInfo = REPLACE(@stringInfo, '],', '" /><xmlInfo keyId ="');
set @stringInfo = REPLACE(@stringInfo, ']', '" />');
set @stringInfo = REPLACE(@stringInfo, ':', '');

set @xmlInfo = CONVERT(xml,@stringInfo); 


SELECT @xmlInfo as [xmlInfo],
@xmlInfo.value('(/xmlInfo[@keyId=sql:variable("@q")]/@value)[1]',
 'varchar(60)');

 

 

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图