SQL-92标准 中文翻译——概念(字符串)
2009-04-05 17:00
393 查看
字符串数据类型通过其描述符描述。字符串数据类型描述符包括:
- 具体字符串数据类型的名称(CHARACTER或 CHARACTER VARYING; NATIONAL
CHARACTER 和 NATIONAL
CHARACTER VARYING 分别表示为CHARACTER 和 CHARACTER VARYING);
- 字符串数据类型的字符长度或最大长度;
- 字符串数据类型的字符集的目录名称,方案名称,字符集名称;
- 字符串数据类型的排序规则的目录名称,方案名称,排序规则名称。
字符集分为三类:国家或国际标准定义的,实现提供的,应用定义的。所有的字符集,通常包含<space>字符。应用定义的字符集定义为“属于”任何该应用所选取的方案。标准或实现所定义的字符集,标准定义的排序规则和实现定义的使用形式转换,属于每个目录中的信息方案(INFORMATION_SCHEMA)。
<implementation-defined
character repertoire name> SQL_TEXT 指定字符清单名称和隐含的使用形式,该使用形式能够表示<SQL language character>中的每个字符和实现支持字符集中的所有其他字符。
给定字符表的所有字符串可以相互比较,但受表3“Collating
sequence usage for comparisons”指定的限制。
排序序列(或称为排序规则)是确定在某特定字符表中字符串排序的规则集合。对于每个字符表,有默认的排序序列,但也可定义额外的排序序列。
注:某一列可定义为具有默认的排序序列。如果是在<column reference>中指定<collate clause>,那么列默认的排序序列可能和它的字符表默认排序序列不同。
给定排序序列,两个字符串相同当且仅当根据在子条款8.2 "<comparison predicate>" 中指定的比较规则是相同的。用于特定比较的排序序列在子条款4.2.3 "Rules determining
collating sequence usage"中确定。
关键词NATIONAL CHARACTER用于指定具有特定实现定义字符表的字符串数据类型。提供特别语法(N'string')表示字符表中常量。
字符集通过其描述符描述。字符集描述符包括:
- 字符集或字符表的名称,
- 如果字符集是一个字符表,那么是使用形式的名称,
- 说明字符集中有哪些字符,
- 字符集默认排序规则名称。
对于每个字符集,至少有一个排序规则。排序规则通过其描述符描述。 排序规则描述符包括:
- 排序规则名称,
- 排序规则作用的字符集名称,
- 排序规则是否具有NO PAD 或PAD SPACE 属性,
- 说明排序规则如何执行。
<concatenation operator> 是一个操作符‘|’, 返回连接给定次序的字符串操作对象形成的字符串。
<character substring function> 是一个三元函数SUBSTRING,给定字符串的起始位置和长度(均为数字),从该字符串中提取子字符串。当隐含的起始位置和终止位置不全在给定的字符串中时,产生截断。
<fold>是一对函数,用来将给定字符串中所有小写字母转换为大写字母,或将所有大写字母转换为小写字母,只有字符串中包含<simple Latin letter>时才有用。
<form-of-use conversion>是一个函数,调用安装提供的使用形式转换,返回来自给定字符串S1的字符串S2。尽管在该国际标准中没有强制规定,但S2和S1的字符序列必须是同一字符序列,根据不同的使用形式编码。一个典型的使用是将字符串从两个字节UCS转换为一个字节的Latin1,反之亦然。
<trim function>是一个函数,返回将开头或结尾的填充字符移除后的第一个字符串参数。第二个参数表明开头或拖尾或开头和拖尾的填充字符是否移除。第三个参数指定需要移除的填充字符。
<character translation>是一个函数,在两个字符集(可以相同)之间,根据某种多对一或一对多的映射,转换给定字符串中的各个字符。该映射不是该函数的部分,而是某个外部函数,由<translation name>确定。
对于任何字符集对,存在零个或多个转换,转换通过<character
translation>调用。转换由转换描述符描述。转换描述符包括:
- 转换的名称,
- 转换源字符集名称,
- 转换目标字符集名称,
- 转换如何执行的说明。
<position
expression> 确定字符串S1第一次出现在字符串S2的位置。如果S1的长度为0,则对于任何S2,返回1。如果S2中不存在S1,则返回0。
<like predicate> 使用三元运算符LIKE(或相反的NOT LIKE),操作三个字符串,返回布尔值。LIKE确定某一字符串是否“匹配”给定“模式”(模式也是一个字符串)。 在模式中,字符'%'(百分号)和'_'(下划线)具有特殊的含义。可选的第三个参数是只包含一个字符的字符串,被称为“转义字符”。当在该模式中需要百分号和下划线本身(不含特殊意义)时使用。
- 表达式不涉及列(如常量,宿主变量等)的比较,使用它们的字符表默认排序序列。
注:对字符表默认的排序序列在子条款10.4, "<character set specification>",和子条款11.28, "<character set
definition>"中定义。
- 当涉及列时(如比较两列或比较列和常量),只要涉及的列有默认排序序列,则使用该排序序列。
- 当涉及的列有不同的默认排序序列,需要在表达式中通过<collate clause>显式指定排序序列。
- 表达式中任何排序序列的显式指定,将覆盖默认排序序列。
为了形式化以上内容,<character value
expression>s有coercibility属性。该属性包含Coercible ,Implicit ,No collating sequence 和Explicit 值。<character value
expression>s有Coercible,Implicit或Explicit属性值时,具有排序序列。
由列引用组成的<character value expression>具有Implicit属性值,和列创建时定义的排序序列。由值(除了列,如宿主变量和常量)组成的<character value expression>具有Coercible属性值,和字符表默认排序序列。仅仅包含一个<collate clause>的<character value expression>具有Explicit属性值,和在<collate clause>中定义的排序序列。
注:当coercibility属性值为Coercible 时,排序序列由子条款8.2<comparison
predicate>唯一指定。
下表定义对于一元或多元操作,排序序列和coercibility 属性如何确定。表1,"Collating coercibility rules
for monadic operators",显示对于一元操作符的排序序列和coercibility规则。表2, "Collating coercibility rules for dyadic operators",显式对于二元操作符的排序序列和coercibility规则。表3,"Collating sequence usage for comparisons",显示特殊比较中的排序序列如何确定。
表1 Collating coercibility rules for monadic
operators
表2 Collating coercibility rules for dyadic
operators
表3 Collating sequence usage for comparisons
对于n元操作(如<case expression>),有X1, | X2, . . . , n个操作数,考虑X1和X2,然后将结果与X3结合来决定排序序列。
- 具体字符串数据类型的名称(CHARACTER或 CHARACTER VARYING; NATIONAL
CHARACTER 和 NATIONAL
CHARACTER VARYING 分别表示为CHARACTER 和 CHARACTER VARYING);
- 字符串数据类型的字符长度或最大长度;
- 字符串数据类型的字符集的目录名称,方案名称,字符集名称;
- 字符串数据类型的排序规则的目录名称,方案名称,排序规则名称。
字符集分为三类:国家或国际标准定义的,实现提供的,应用定义的。所有的字符集,通常包含<space>字符。应用定义的字符集定义为“属于”任何该应用所选取的方案。标准或实现所定义的字符集,标准定义的排序规则和实现定义的使用形式转换,属于每个目录中的信息方案(INFORMATION_SCHEMA)。
<implementation-defined
character repertoire name> SQL_TEXT 指定字符清单名称和隐含的使用形式,该使用形式能够表示<SQL language character>中的每个字符和实现支持字符集中的所有其他字符。
4.2.1 字符串和排序序列
字符串是字符序列,其中的字符来自同一字符表。特定字符串的字符选自某一字符表,该字符表可以显示或隐式指定。字符串具有长度,长度为字符序列中字符的个数。长度大于或等于0。给定字符表的所有字符串可以相互比较,但受表3“Collating
sequence usage for comparisons”指定的限制。
排序序列(或称为排序规则)是确定在某特定字符表中字符串排序的规则集合。对于每个字符表,有默认的排序序列,但也可定义额外的排序序列。
注:某一列可定义为具有默认的排序序列。如果是在<column reference>中指定<collate clause>,那么列默认的排序序列可能和它的字符表默认排序序列不同。
给定排序序列,两个字符串相同当且仅当根据在子条款8.2 "<comparison predicate>" 中指定的比较规则是相同的。用于特定比较的排序序列在子条款4.2.3 "Rules determining
collating sequence usage"中确定。
关键词NATIONAL CHARACTER用于指定具有特定实现定义字符表的字符串数据类型。提供特别语法(N'string')表示字符表中常量。
字符集通过其描述符描述。字符集描述符包括:
- 字符集或字符表的名称,
- 如果字符集是一个字符表,那么是使用形式的名称,
- 说明字符集中有哪些字符,
- 字符集默认排序规则名称。
对于每个字符集,至少有一个排序规则。排序规则通过其描述符描述。 排序规则描述符包括:
- 排序规则名称,
- 排序规则作用的字符集名称,
- 排序规则是否具有NO PAD 或PAD SPACE 属性,
- 说明排序规则如何执行。
4.2.2 字符串操作
4.2.2.1 字符串操作符及返回值
字符串<concatenation operator> 是一个操作符‘|’, 返回连接给定次序的字符串操作对象形成的字符串。
<character substring function> 是一个三元函数SUBSTRING,给定字符串的起始位置和长度(均为数字),从该字符串中提取子字符串。当隐含的起始位置和终止位置不全在给定的字符串中时,产生截断。
<fold>是一对函数,用来将给定字符串中所有小写字母转换为大写字母,或将所有大写字母转换为小写字母,只有字符串中包含<simple Latin letter>时才有用。
<form-of-use conversion>是一个函数,调用安装提供的使用形式转换,返回来自给定字符串S1的字符串S2。尽管在该国际标准中没有强制规定,但S2和S1的字符序列必须是同一字符序列,根据不同的使用形式编码。一个典型的使用是将字符串从两个字节UCS转换为一个字节的Latin1,反之亦然。
<trim function>是一个函数,返回将开头或结尾的填充字符移除后的第一个字符串参数。第二个参数表明开头或拖尾或开头和拖尾的填充字符是否移除。第三个参数指定需要移除的填充字符。
<character translation>是一个函数,在两个字符集(可以相同)之间,根据某种多对一或一对多的映射,转换给定字符串中的各个字符。该映射不是该函数的部分,而是某个外部函数,由<translation name>确定。
对于任何字符集对,存在零个或多个转换,转换通过<character
translation>调用。转换由转换描述符描述。转换描述符包括:
- 转换的名称,
- 转换源字符集名称,
- 转换目标字符集名称,
- 转换如何执行的说明。
4.2.2.2 其他字符串操作符
<length expression> 返回给定字符串的长度(整数)。<position
expression> 确定字符串S1第一次出现在字符串S2的位置。如果S1的长度为0,则对于任何S2,返回1。如果S2中不存在S1,则返回0。
<like predicate> 使用三元运算符LIKE(或相反的NOT LIKE),操作三个字符串,返回布尔值。LIKE确定某一字符串是否“匹配”给定“模式”(模式也是一个字符串)。 在模式中,字符'%'(百分号)和'_'(下划线)具有特殊的含义。可选的第三个参数是只包含一个字符的字符串,被称为“转义字符”。当在该模式中需要百分号和下划线本身(不含特殊意义)时使用。
4.2.3 确定排序序列用法规则
该规则确定对字符串的排序序列用法,基于以下:- 表达式不涉及列(如常量,宿主变量等)的比较,使用它们的字符表默认排序序列。
注:对字符表默认的排序序列在子条款10.4, "<character set specification>",和子条款11.28, "<character set
definition>"中定义。
- 当涉及列时(如比较两列或比较列和常量),只要涉及的列有默认排序序列,则使用该排序序列。
- 当涉及的列有不同的默认排序序列,需要在表达式中通过<collate clause>显式指定排序序列。
- 表达式中任何排序序列的显式指定,将覆盖默认排序序列。
为了形式化以上内容,<character value
expression>s有coercibility属性。该属性包含Coercible ,Implicit ,No collating sequence 和Explicit 值。<character value
expression>s有Coercible,Implicit或Explicit属性值时,具有排序序列。
由列引用组成的<character value expression>具有Implicit属性值,和列创建时定义的排序序列。由值(除了列,如宿主变量和常量)组成的<character value expression>具有Coercible属性值,和字符表默认排序序列。仅仅包含一个<collate clause>的<character value expression>具有Explicit属性值,和在<collate clause>中定义的排序序列。
注:当coercibility属性值为Coercible 时,排序序列由子条款8.2<comparison
predicate>唯一指定。
下表定义对于一元或多元操作,排序序列和coercibility 属性如何确定。表1,"Collating coercibility rules
for monadic operators",显示对于一元操作符的排序序列和coercibility规则。表2, "Collating coercibility rules for dyadic operators",显式对于二元操作符的排序序列和coercibility规则。表3,"Collating sequence usage for comparisons",显示特殊比较中的排序序列如何确定。
表1 Collating coercibility rules for monadic
operators
Operand Coercibility and Collating Sequence | Result Coercibility and Collating Sequence | ||
Coercibility | Collating Sequence | Coercibility | Collating Sequence |
Coercible | default | Coercible | default |
Implicit | X | Implicit | X |
Explicit | X | Explicit | X |
No collating sequence | No collating sequence |
operators
Operand 1 Coercibility and_Collating_Sequence | Operand 2 Coercibility and_Collating_Sequence | Operand 3 Coercibility and_Collating_Sequence | |||
Coercibility | Collating Sequence | Coercibility | Collating Sequence | Coercibility | Collating Sequence |
Coercible | default | Coercible | default | Coercible | default |
Coercible | default | Implicit | Y | Implicit | Y |
Coercible | default | No collating sequence | No collating sequence | ||
Coercible | default | Explicit | Y | Explicit | Y |
Implicit | X | Coercible | default | Implicit | X |
Implicit | X | Implicit | X | Implicit | X |
Implicit | X | Implicit | Y !=X | No collating sequence | |
Implicit | X | No collating sequence | No collating sequence | ||
Implicit | X | Explicit | Y | Explicit | Y |
No collating sequence | Any, except Explicit | Any | No collating sequence | ||
No collating sequence | Explicit | X | Explicit | X | |
Explicit | X | Coercible | default | Explicit | X |
Explicit | X | Implicit | Y | Explicit | X |
Explicit | X | No collating sequence | Explicit | X | |
Explicit | X | Explicit | X | Explicit | X |
Explicit | X | Explicit | Y !=X | Not permitted: invalid syntax |
Comparand 1 Coercibility and Collating Sequence | Comparand 2 Coercibility and Collating Sequence | Collating Sequence Used For The Comparison | ||
Coercibility | Collating Sequence | Coercibility | Collating Sequence | |
Coercible | default | Coercible | default | default |
Coercible | default | Implicit | Y | Y |
Coercible | default | No collating sequence | Not permitted: invalid syntax | |
Coercible | default | Explicit | Y | Y |
Implicit | X | Coercible | default | X |
Implicit | X | Implicit | X | X |
Implicit | X | Implicit | Y !=X | Not permitted: invalid syntax |
Implicit | X | No collating sequence | Not permitted: invalid syntax | |
Implicit | X | Explicit | Y | Y |
No collating sequence | Any, except Explicit | Any | Not permitted: invalid syntax | |
No collating sequence | Explicit | X | X | |
Explicit | X | Coercible | default | X |
Explicit | X | Implicit | Y | X |
Explicit | X | No collating sequence | X | |
Explicit | X | Explicit | X | X |
Explicit | X | Explicit | Y !=X | Not permitted: invalid syntax |
相关文章推荐
- SQL-92标准 中文翻译——概念(位字符串)
- SQL-92标准 中文翻译——概念 (数据类型)
- SQL-92标准 中文翻译——定义、记号和约定 (记号)
- SQL-92标准 中文翻译——范围
- SQL-92标准 中文翻译——简介
- SQL-92标准 中文翻译——规范性引用
- SQL-92标准 中文翻译
- SQL-92标准 中文翻译——定义、记号和约定 (约定)
- SQL-92标准 中文翻译 ——前言
- SQL-92标准 中文翻译——定义、记号和约定 (定义)
- swift中文文档翻译之--字符串和字符
- SQL中 在字符串中查找所有中文字符
- sqlplus查询中文字符串变乱码
- XForms 1.1 中文翻译—第1章 关于XForms标准
- sql = 和<>遵循的sql-92标准的设置SET ANSI_NULLS ON
- sql计算字符串中包含中文、英文字符长度
- SQL 截取字符串,中文算两个字符的方法
- JAVA翻译给定中文字符串的拼音首字母
- SQLite 基本上符合 SQL-92 标准
- 博客 其实是很臭的翻译 人人都可以对BLOG进行中文解释,而我依据第三标准解释为:勃渴