sql server 汉字排序

SQL排序规则详解
本文介绍了SQL Server中的排序规则概念及其实现方式,并通过实例演示了如何根据不同的需求选择合适的排序规则进行数据排序。
一般来讲这种情况是不是出现的,但有时数据库的字体编码方式和显示的编码方式不一样时就是有这种需求,如简体和繁体,就会出现数据库里的排序和显示的排序不对的情况,就会有这种需求,但可能情况不一样,请自己根据自己的需求来分析,说得不到请谅解汉字!
    排序规则简介
什么叫排序规则呢?ms是这样描述的:" microsoft sql server 2000 中,字符串的物理存储由排序规则控制。排序规则指定表示每个字符的位模式以及存储和比较字符所使用的规则。"
  在查询分析器内执行下面语句,可以得到sql server支持的所有排序规则。
    select * from ::fn_helpcollations()
排序规则名称由两部份构成,前半部份是指本排序规则所支持的字符集。如:
  chinese_prc_cs_ai_ws
前半部份:指unicode字符集,chinese_prc_指针对大陆简体字unicode的排序规则。
排序规则的后半部份即后缀含义:
  _bin 二进制排序
  _ci(cs) 是否区分大小写,ci不区分,cs区分
  _ai(as) 是否区分重音,ai不区分,as区分   
  _ki(ks) 是否区分假名类型,ki不区分,ks区分 
     _wi(ws)
是否区分宽度 wi不区分,ws区分 

区分大小写:如果想让比较将大写字母和小写字母视为不等,请选择该选项。
区分重音:如果想让比较将重音和非重音字母视为不等,请选择该选项。如果选择该选项,比较还将重音不同的字母视为不等。
区分假名:如果想让比较将片假名和平假名日语音节视为不等,请选择该选项。

区分宽度:如果想让比较将半角字符和全角字符视为不等,请选择该选项


select * from fanti order by Name collate chinese_prc_cs_as_ks_ws

select * from fanti order by Name collate chinese_prc_ci_as_ks_ws

自己可以根据自己的需求来修改SQL语句

### SQL Server 中字段的排序规则 在 SQL Server 中,字段的排序规则(collation)决定了字符数据如何比较和排序。这不仅影响字符串的存储方式,还会影响查询性能以及跨数据库操作的一致性。 #### 查看现有字段的排序规则 为了查看特定表中某个字段的排序规则,可以使用如下 T-SQL 查询: ```sql SELECT c.name AS ColumnName, t.name AS TypeName, c.collation_name AS CollationName FROM sys.columns c JOIN sys.types t ON c.system_type_id = t.system_type_id WHERE object_id = OBJECT_ID('YourTableName') AND c.collation_name IS NOT NULL; ``` 此命令会返回给定表内所有具有显式定义排序规则的列的信息[^4]。 #### 创建带有自定义排序规则的新字段 当创建新表或向已有表添加新字段时,可以通过 `CREATE TABLE` 或者 `ALTER TABLE` 命令指定具体的排序规则: ```sql -- 新建表并设置某列为特定排序规则 CREATE TABLE ExampleTable ( ID INT PRIMARY KEY, Name NVARCHAR(50) COLLATE Latin1_General_CI_AS -- 使用区分大小写的拉丁语通用排序规则 ); -- 修改已存在表中的某一列以应用新的排序规则 ALTER TABLE ExistingTable ALTER COLUMN SomeColumn VARCHAR(MAX) COLLATE Chinese_PRC_CS_AS_SC; -- 更改为中文拼音全角半角敏感排序规则 ``` 上述例子展示了两种不同场景下设定排序规则的方法:一种是在新建表格的同时指定了名称栏位采用不区分大小写的拉丁字母集;另一种则是更改了一个现存表某些文本型态的数据项为更严格的中国普通话拼音顺序,并且保持了对大小写字母的区别对待[^2]。 #### 调整整个数据库级别的默认排序规则 如果希望改变整个数据库内部所有后续新增对象所继承的基础排序属性,则需执行更为复杂的迁移过程。通常情况下建议通过备份还原的方式来进行这项工作,因为直接在线调整可能带来兼容性和稳定性方面的问题。具体步骤参见官方文档或其他权威资源获取指导[^5]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值