分类目录归档:计算机杂谈

mssql sqlserver union 和union all 关键字用法上的区别


摘要:
下文讲述mssql中union和union all关键字之间的区别


union及union all语法简介

union 语法:
sql查询语句
union 
sql 查询语句
----------------
union all 语法:
sql查询语句
union all 
sql 查询语句

union 和union all 功能及效率说明:
两者关键字都是将两个或多个结果集合并为一个结果集

union union all关键字功能不同点:
union关键字:会过滤结果集中重复的记录
union all关键字:不会过滤结果集
union:会对结果集进行排序
union all:合并后不做任何处理
通过以上的合并方式,我们可以看出union all的效率高于union

mssql sqlserver 获取指定汉字的笔画数的方法分享


摘要:
下文讲述计算汉字笔画数的sql函数分享,如下所示:


例:建立汉字笔画数sql函数

 create function [dbo].[fn_hanZiBiHuaShu](@char nchar(2)) 
returns int 
as 
begin 
return( 
case when unicode(@char) between 19968 and 40869 then( 
select top 1 id from( 
select id=1,ch=N'亅' 
union all select 2,N'阝' 
union all select 3,N'马' 
union all select 4,N'风' 
union all select 5,N'龙' 
union all select 6,N'齐' 
union all select 7,N'龟' 
union all select 8,N'齿' 
union all select 9,N'鸩' 
union all select 10,N'龀' 
union all select 11,N'龛' 
union all select 12,N'龂' 
union all select 13,N'龆' 
union all select 14,N'龈' 
union all select 15,N'龊' 
union all select 16,N'龍' 
union all select 17,N'龠' 
union all select 18,N'龎' 
union all select 19,N'龐' 
union all select 20,N'龑' 
union all select 21,N'龡' 
union all select 22,N'龢' 
union all select 23,N'龝' 
union all select 24,N'齹' 
union all select 25,N'龣' 
union all select 26,N'龥' 
union all select 27,N'齈' 
union all select 28,N'龞' 
union all select 29,N'麷' 
union all select 30,N'鸞' 
union all select 31,N'麣' 
union all select 32,N'龖' 
union all select 33,N'龗' 
union all select 35,N'齾' 
union all select 36,N'齉' 
union all select 39,N'靐' 
union all select 64,N'龘' 
)a where ch>=@char collate Chinese_PRC_Stroke_CS_AS_KS_WS 
order by id ASC) 
else 0 end) 
end 

go

--测试获取汉字笔画数的sql函数 
select dbo.[fn_hanZiBiHuaShu]('猫')

drop function dbo.[fn_hanZiBiHuaShu]
go

mssql sqlserver isnumeric 是否数值类型检测函数使用注意事项


摘要:
下文讲述我们常用的isnumeric检测函数的具体用法,如下所示:



一、isnumeric 语法简介

isnumeric(表达式)
当输入的表达式 可转换为numeric符合的数据类型时,
isnumeric函数返回1 否则返回0
————————————————
isnumeric可检测的类型包括:
int、numeric、bigint、money、smallint、smallmoney、
tinyint、float、decimal、real
————————————————

如果在数字字符前面加上 “+” 或 “-” 或”货币符号”,
isnumeric函数将返回1,
所以检测数据类型时,需注意货币符号



二、isnumeric 注意事项

declare @t table(info varchar(60))
insert into @t (info)
values('8'),('85,890.056'),('¥898'),('$8,888'),('+8'),('98.09')
---检测是否为数值型
select * from @t t where isnumeric(info)=1 

---如果不包含千分号和货币符号,可采用pathindex
SELECT  *   FROM    @t t 
WHERE   PATINDEX('%[^0-9|.|-|+]%', t.info) = 0  
go