日度归档:2018年5月4日

mssql sqlserver 获取中文字符首字母(拼音码)的方法分享


摘要:
下文记载获取中文字拼音首字母(拼音码)的方法分享,如下所示:


create function fn_getPinYin(@tmp nvarchar(10))
returns varchar(10)
as
begin
declare @tmpPinY nchar(1),@PYAll nvarchar(10)
set @PYAll=''
while len(@tmp)>0
begin
set @tmpPinY=left(@tmp,1)
--如果非汉字字符,返回原字符
set @PYAll=@PYAll+(case when unicode(@tmpPinY) between 19968 and 19968+20901
then (select top 1 PinYin from (
select 'A' as PinYin,N'驁' as tmp
union all select 'B',N'簿'
union all select 'C',N'錯'
union all select 'D',N'鵽'
union all select 'E',N'樲'
union all select 'F',N'鰒'
union all select 'G',N'腂'
union all select 'H',N'夻'
union all select 'J',N'攈'
union all select 'K',N'穒'
union all select 'L',N'鱳'
union all select 'M',N'旀'
union all select 'N',N'桛'
union all select 'O',N'漚'
union all select 'P',N'曝'
union all select 'Q',N'囕'
union all select 'R',N'鶸'
union all select 'S',N'蜶'
union all select 'T',N'籜'
union all select 'W',N'鶩'
union all select 'X',N'鑂'
union all select 'Y',N'韻'
union all select 'Z',N'咗'
) T
where tmp>=@tmpPinY collate Chinese_PRC_CS_AS_KS_WS
order by PinYin ASC) else @tmpPinY end)
set @tmp=right(@tmp,len(@tmp)-1)
end
return @PYAll
end
go

函数应用举例

select dbo.fn_getPinYin('猫猫小屋go365')
----输出----
MMXWgo365
mssql_sqlserver_获取拼音编码

mssql_sqlserver_获取拼音编码

程序开发中同数据库交互常见的10个错误写法分享


摘要:
sql脚本是声明式语言,sql脚本是一个顺序式的按代码块的执行方式,
在程序编写中,我们应该尽量避免以下非最优的sql处理方式



1.忽略null值类型

将null和空字符串作等同处理,导致显示数据异常;
count统计数据时,null列不会计算到数据行中;
——-避免方法——-
尽量避免字符列出现null值
编写脚本时,注意null是否对结果集产生变化



2.sql查询出全部数据,并加载至内存

在数据的获取中,我们常常用

 select [列1],[列2],[列3] from tableName

这一种查询的写法,将会使数据全部加载至内存中,导致系统占用过多的内存和CPU。
——–避免方法——–

  sql脚本分页写法


3.sql 中多实用union、union All

union:会自动过滤重复,并且联结的两张表的列数量需一致
union all :不会自动过滤重复数据,联结表的列数量,依第一个表为住

4.较大结果集必须采用分页模式

分页方法可以使用开窗函数(row_number over)进行相关处理。

5.高频查询,尽量采用缓存

采用缓存模式,可避免对数据库的高频查询

6.复杂的联结计算中少使用distinct 去重操作

在大型的数据集中,使用distinct去重,会加大计算机的计算量,此时我们应该在连接条件时,进行限制,
避免出现过多,不必要的笛卡尔集合的计算。

7.少用merge关键字

因为使用merge会导致语义理解的异常,可能导致异常

8.多使用 开窗函数

在重复数据取一条
聚合计算上
多实用开窗函数来提高操作性能

9.数据的排序操作,尽量放入db操作

db对数据的操作,有个超高的天赋,比起程序处理要快一些

10.数据插入操作

mssql 批量数据插入,尽量使用 sql bulk 模式,
禁止一条一条的写入数据。