字符串处理函数接受类型为 CHAR 、NCHAR 、VARCHAR 、NVARCHAR 或 LVARCHAR 的参数。可以在使用表达式的任何地方使用字符串处理函数。 下列函数在字符串中进行大写字母和小写字母之间的转换: LOWER UPPER INITCAP 下列函数以各种方法处理字符串: REPLACE SUBSTR SUBSTRING LPAD RPAD 限制: 不能过载任何字符串处理函数来处理扩展数据类型。 LOWER 函数 GBase 8s SQL 指南:教程 南大通用数据技术股份有限公司 - 99 - 使用 LOWER 函数来将字符串中的每个大写字母替换为小写字母。LOWER 函数接受字符 数据类型的参数并返回具有与指定的参数相同数据类型的值。 下列函数使用 LOWER 函数来将字符串的任何大写字母转换为小写字母。 图: 查询 SELECT manu_code, LOWER(manu_code) FROM items WHERE order_num = 1018 图: 查询结果 manu_code (expression) PRC prc KAR kar PRC prc SMT smt HRO hro UPPER 函数 使用 UPPER 函数来将字符串中的每个小写字母替换为大写字母。UPPER 函数接受字符数 据类型的参数并返回具有与指定的参数相同数据类型的值。 下列查询中 UPPER 函数将字符串中的任何小写字母转换为大写字母。 图: 查询 SELECT call_code, UPPER(code_descr) FROM call_type 图: 查询结果 call_code (expression) B BILLING ERROR D DAMAGED GOODS I INCORRECT MERCHANDISE SENT L LATE SHIPMENT O OTHER INITCAP 函数 GBase 8s SQL 指南:教程 南大通用数据技术股份有限公司 - 100 - 使用 INITCAP 函数来将字符串中每个词的首字母替换为大写字母。 每当函数遇到字母之前 是非字母字符时,INITCAP 函数就会假设是一个新词。INITCAP 函数接受字符数据类型的 参数并返回指定参数相同数据类型的值。 下列查询使用 INITCAP 函数将字符串中每个词的首字母替换为大写字母。 图: 查询 SELECT INITCAP(description) FROM stock WHERE manu_code = "ANZ"; 图: 查询结果 (expression) Tennis Racquet Tennis Ball Volleyball Volleyball Net Helmet Golf Shoes 3 Golf Balls Running Shoes Watch Kick Board Swim Cap REPLACE 函数 使用 REPLACE 函数来将字符串中的某一组字符替换为其它字符。 在以下查询中,REPLACE 函数将单元列值 each 替换为查询返回的每一行的 item。 REPLACE 函数的第一个参数是要进行求值的表达式。 第二个参数指定想要替换的字符。 第 三个参数指定要替换除去的字符的新字符串。 图: 查询 SELECT stock_num, REPLACE(unit,"each", "item") cost_per, unit_price FROM stock WHERE manu_code = "HRO"; 图: 查询结果 stock_num cost_per unit_price GBase 8s SQL 指南:教程 南大通用数据技术股份有限公司 - 101 - 1 case $250.00 2 case $126.00 4 case $480.00 7 case $600.00 110 case $260.00 205 case $312.00 301 item $42.50 302 item $4.50 304 box $280.00 305 case $48.00 309 case $40.00 312 box $72.00 SUBSTRING 和 SUBSTR 函数 可以使用 SUBSTRING 和 SUBSTR 函数返回部分字符串。指定开始位置和长度(可选)来 确定函数返回字符串的哪部分。 限制: 这两个函数在参数中的使用测量单位是字节,而非逻辑字符。这在缺省语言环境和另 一个单字节语言环境中都不重要,但是您不能在代码集与其存储长度不同的逻辑字符的语言环 境中调用 SUBSTRING 或 SUBSTR。 SUBSTRING 函数 可以使用 SUBSTRING 函数来返回字符串的某部分。指定开始位置和长度(可选)来确定 返回字符串的哪部分。 可以指定正数或负数作为开始位置。 开始位置 1 指定 SUBSTRING 函 数从字符串的第一个位置开始。当开始位置为(0)或负数时,SUBSTRING 函数从字符串 的开头开始向后计数。 下列查询显示 SUBSTRING 函数的一个示例,其返还查询返回的任何 sname 列值的前四个 字符。在本示例中,SUBSTRING 函数从字符串的开头开始,返回开始位置开始的四个字 符。 图: 查询 SELECT sname, SUBSTRING(sname FROM 1 FOR 4) FROM state WHERE code = "AZ"; 图: 查询结果 sname (expression) Arizona Ariz GBase 8s SQL 指南:教程 南大通用数据技术股份有限公司 - 102 - 在下列查询中,SUBSTRING 函数指定开始位置 6,但未指定长度。函数返回从字符串的第 六个位置开始到字符串结尾的字符串。 图: 查询 SELECT sname, SUBSTRING(sname FROM 6) FROM state WHERE code = "WV"; 图: 查询结果 sname (expression) West Virginia Virginia 在下列查询中,SUBSTRING 函数只返回查询返回的任何 sname 列值的第一个字符。对 于 SUBSTRING 函数,开始位置 -2 表示从字符的开始位置向后数三个位置(0 、-1 、-2) (对于开始位置 0,函数从字符串的开始位置向后数一个位置)。 图: 查询 SELECT sname, SUBSTRING(sname FROM -2 FOR 4) FROM state WHERE code = "AZ"; 图: 查询结果 sname (expression) Arizona A SUBSTR 函数 SUBSTR 函数的作用于 SUBSTRING 函数相同,但两个函数的语法有区别。 要返回字符串的一部分,指定开始位置和长度(可选)来确定 SUBSTR 函数返回子串的哪 个部分。为 SUBSTR 函数指定的开始位置可以是正数,也可以是负数。然而,SUBSTR 函 数用与 SUBSTRING 函数不同的方式处理开始位置中的负数。当开始位置是负数时, SUBSTR 函数从字符串的末尾开始向后计数,这取决于字符串的长度,而不是字符串包含 词或可视字符的长度。SUBSTR 函数将开始位置中的零(0)或 1 识别为字符串中的第一个 位置。 下列查询显示包括负数作为开始位置的 SUBSTR 函数的一个示例。假定开始位置为 -15, 那么 SUBSTR 函数从字符串末尾开始向后数 15 个位置来找到开始位置,然后返回下五个 字符。 图: 查询 SELECT sname, SUBSTR(sname, -15, 5) FROM state WHERE code = "CA"; 图: 查询结果 GBase 8s SQL 指南:教程 南大通用数据技术股份有限公司 - 103 - sname (expression) California Calif 要使用负数作为开始位置, 需要指定求出的长度值。 sname 列被定义为 CHAR(15), 因此接 受类型为 sname 的参数的 SUBSTR 函数可以将开始位置 0 、1 或 -15 用于函数来返回从字 符串的第一个位置开始的字符串。 下列查询返回与图 1相同的结果。 图: 查询 SELECT sname, SUBSTR(sname, 1, 5) FROM state WHERE code = "CA"; LPAD 函数 使用 LPAD 函数返回已用重复次数达到必要次数的字符序列在左边填充或截断的字符串的 副本,这取决于字符串中填充部分的指定长度。指定源字符串、要返回的字符串的长度和 要用来填充的字符串。 源字符串和用来填充的字符串的数据类型可以是能转换为 VARCHAR 或 NVARCHAR 的任何数据类型。 下列查询显示具有指定长度 21 个字节的 LPAD 函数的一个示例。 由于源字符串长度为 15 个字节(sname 被定义为 CHAR(15)),所以 LPAD 函数填充字符串左边的前六个位置。 图: 查询 SELECT sname, LPAD(sname, 21, "-") FROM state WHERE code = "CA" OR code = "AZ"; 图: 查询结果 sname (expression) California ------California Arizona ------Arizona RPAD 函数 所以 RPAD 函数返回已用重复次数达到必要次数的字符序列在右边填充或截断的字符串的 副本,这取决于字符串中填充部分的指定长度。指定源字符串、要返回的字符串的长度和 要用来填充的字符串。 GBase 8s SQL 指南:教程 南大通用数据技术股份有限公司 - 104 - 源字符串和用来填充的字符串的数据类型可以是能转换为 VARCHAR 或 NVARCHAR 的任何数据类型。 下列查询显示具有指定长度 21 个字节的 RPAD 函数的一个示例。 由于源字符串长度为 15 个字节(sname 被定义为 CHAR(15)),所以 LPAD 函数填充字符串右边的前六个位置。 图: 查询 SELECT sname, RPAD(sname, 21, "-") FROM state WHERE code = "WV" OR code = "AZ"; 图: 查询结果 sname (expression) West Virginia West Virginia ------ Arizona Arizona ------ 除了这些函数之外,LTRIM 和 RTRIM 函数可以返回删除其字符串参数中指定前导或尾随 填充字符的值,并且 ASCII 函数可以返回在其字符串参数中第一个字符的 ASCII 字符集 中代码点的数字值。 这些内置函数对字符串值的操作在 GBase 8s SQL 指南: 语法中进行了 描述。