zoukankan      html  css  js  c++  java
  • SQL 排序

    一、排序规则简介:

    什么叫排序规则呢?MS是这样描述的:"在 Microsoft SQL Server  中,

    字符串的物理存储由排序规则控制。排序规则指定表示每个字符的位模式以及存

    储和比较字符所使用的规则。"

      在查询分析器内执行下面语句,可以得到SQL SERVER支持的所有排序规则。

        select * from ::fn_helpcollations() 

    排序规则名称由两部份构成,前半部份是指本排序规则所支持的字符集。

    如:

      Chinese_PRC_CS_AI_WS 

    前半部份:指UNICODE字符集,Chinese_PRC_指针对大陆简体字UNICODE的排序规则,按拼音排序。

    Chinese_PRC_Stroke 表示按汉字笔画排序;

    排序规则的后半部份即后缀 含义: 

      _BIN 二进制排序 

      _CI(CS) 是否区分大小写,CI不区分,CS区分(case-insensitive/case-sensitive)

      _AI(AS) 是否区分重音,AI不区分,AS区分(accent-insensitive/accent-sensitive)

      _KI(KS) 是否区分假名类型,KI不区分,KS区分(kanatype-insensitive/kanatype-sensitive)

      _WI(WS) 是否区分宽度 WI不区分,WS区分(width-insensitive/width-sensitive) 

    区分大小写:如果想让比较将大写字母和小写字母视为不等,请选择该选项。

    区分重音:如果想让比较将重音和非重音字母视为不等,请选择该选项。如果选择该选项,

    比较还将重音不同的字母视为不等。

    区分假名:如果想让比较将片假名和平假名日语音节视为不等,请选择该选项。

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

    二、排序规则选择:

    如果 SQL Server  实例的所有用户都使用同一种语言,则应选取支持该语言的排序规则。例如,如果所有用户都讲法语,则选择法语排序规则。如果您的 SQL Server 实例的用户讲多种语言,则应选择能最好地满足各种语言需要的排序规则。例如,如果用户一般都讲西欧语言,则选择 Latin1_General 排序规则。 

    如果要支持讲多种语言的用户,则对于所有字符数据使用 Unicode 数据类型 ncharnvarchar 和 nvarchar(max) 是非常重要的。Unicode 可避免非 Unicode 的 charvarchar 和 text 数据类型带来的代码页转换难题。因为排序规则定义用于比较操作的排序次序和 Unicode 字符的排序,所以当用 Unicode 数据类型实现所有列时,排序规则仍会产生不同。即使使用 Unicode 数据类型存储字符数据时,也应选择支持大多数用户的排序规则,以防使用非 Unicode 数据类型实现列或变量。

    SQL Server 只支持由基础操作系统支持的代码页。在执行取决于排序规则的操作时,引用的对象所使用的 SQL Server 排序规则必须使用计算机上运行的操作系统所支持的代码页。 

    如果指定的排序规则(或引用的对象所使用的排序规则)使用 Windows 操作系统不支持的代码页,则 SQL Server 将发出错误。对此错误的响应取决于计算机上安装的 Windows 操作系统的版本。Windows 2000 及更新版本支持由 SQL Server 排序规则使用的所有代码页。因此,不会出现该错误消息。

    三、排序规则的语法:

    Windows 排序规则名称由排序规则指示器和比较风格构成。 

    语法

    < Windows_collation_name > :: = 

        CollationDesignator_<ComparisonStyle>

        < ComparisonStyle > ::= 

            CaseSensitivity_AccentSensitivity

            [_KanatypeSensitive [_WidthSensitive ] ]

            | _BIN

    参数

    CollationDesignator

    指定 Windows 排序规则使用的基本排序规则。基本排序规则包括: 

    当指定按字典排序时应用其排序规则的字母表或语言

    用于存储非 Unicode 字符数据的代码页。 

    例如 Latin1_General 或法文,两者都使用代码页 1252,或土耳其文,它使用代码页 1254

    CaseSensitivity

    CI 指定不区分大小写,CS 指定区分大小写。

    AccentSensitivity

    AI 指定不区分重音,AS 指定区分重音。

    KanatypeSensitive

    Omitted 指定不区分大小写,KS 指定区分假名类型。

    WidthSensitivity

    Omitted 指定不区分大小写,WS 指定区分大小写。

    BIN

    指定使用二进制排序次序。

  • 相关阅读:
    提取数据用strpos函数比较,预期和实际不符问题解决
    thinkphp模板中foreach循环没数据的错误解决
    错误之thinkphp模型使用发生的错误
    ThinkPHP添加模板时,犯的三个错
    mysql中的comment用法
    在cmd下输入/g无效
    Windows下PHPUnit安装
    python中string.casefold和string.lower区别
    python3数据类型
    python终端颜色设置
  • 原文地址:https://www.cnblogs.com/zxm1002/p/4748901.html
Copyright © 2011-2022 走看看