由生僻字引发的修改SQL Server 的排序规则思考

背景:SQL Server 2008 R2的默认实例为【Chinese_PRC_CI_AS】,这个排序规则不支持生僻字“”等的排序(会将生僻字放在第一条),所以需修改为【Chinese_Simplified_Pinyin_100_CI_AS】。

1、右键库,选择选项--排序规则。


确定即可(其实所做的操作相当于sql脚本):

ALTER DATABASE [数据库名称] COLLATE   Chinese_Simplified_Pinyin_100_CI_AS

2、确定执行脚本时可能出现库依赖问题:

解决思路方案如下:

先备份依赖,然后删除依赖,执行更改规则的脚本后再添加依赖

---先删除依赖:
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[fn_Birthday]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT'))
BEGIN
  drop function fn_Birthday
END

--后添加上去:
GO
/*****************************************************************
**功能:计算指定年份的生日
**返回:日期
******************************************************************/
CREATE FUNCTION fn_Birthday(@intYear int,@dtmBirthday datetime)
RETURNS datetime
WITH SCHEMABINDING
AS
BEGIN

   RETURN case when isdate( convert(varchar(4),@intYear)+'-'+convert(varchar(2),month(@dtmBirthday))+'-'+convert(varchar(2),day(@dtmBirthday)) )=1
 then convert(datetime,convert(varchar(4),@intYear)+'-'+convert(varchar(2),month(@dtmBirthday))+'-'+convert(varchar(2),day(@dtmBirthday)) ) else null end

END

GO


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值