字符串函数和运算符
字符串函数和运算符处理字符串输入并返回字符串或数值。Extreme DPS 支持的字符串类型是 varchar 和 text。有关字符串类型的详细说明,请参考 字符类型。
SQL 字符串函数和运算符
本节详细介绍了 Extreme DPS 支持的每个 SQL 字符串函数和运算符。
||
连接一个或多个字符串。
说明
Null 值会被忽略。
语法
<string1> || <string2>[, ... <stringN>]参数
<stringN>:要连接的 varchar 字符串。
返回
varchar 值。
示例
SELECT 'Extreme' || 'DPS';
-> ExtremeDPSBIT_LENGTH
返回字符串的长度(以位为单位)。
语法
BIT_LENGTH(<string>)参数
<string>:要评估长度的 varchar 字符串。
返回
integer 值。
示例
SELECT BIT_LENGTH('Extreme DPS');
-> 88CHAR_LENGTH 或 CHARACTER_LENGTH
返回字符串的字符数量。
说明
CHARACTER_LENGTH是CHAR_LENGTH的别名。
语法
CHAR_LENGTH(<string>)
CHARACTER_LENGTH(<string>)参数
<string>:要计算包含字符数量的字符串。
返回
integer 值。
示例
SELECT CHAR_LENGTH('Extreme DPS');
-> 11CONCAT_WS
通过分隔符将字符串连接起来。
函数中指定的第一个参数是分隔符。空值将被忽略。
语法
CONCAT_WS( <separator>, <string1>[, <string2> ...])参数
-
<separator>: 作为分隔符的text字符串。 -
<string>: 要连接的text字符串。
返回值
text 值。
示例
SELECT CONCAT_WS(':', 'adbcd', 'efg', 'hijk');
-> 'adbcd:efg:hijk'LOWER
将字符串中的所有字符转换为小写。
语法
LOWER(<string>)参数
<string>:要转换的 varchar 字符串。
返回值
varchar 值。
示例
SELECT LOWER('Extreme DPS');
-> extreme dpsOCTET_LENGTH
返回字符串的长度(以字节为单位)。
语法
OCTET_LENGTH(<string>)参数
<string>:要评估长度的 varchar 字符串。
返回值
integer 值。
示例
SELECT OCTET_LENGTH('Extreme DPS');
-> 11POSITION
返回子字符串在字符串中首次出现的位置。
字符串中第一个字符的位置为 1。
语法
POSITION(<substring> in <string>)参数
-
<substring>要搜索的
varchar字符串。 -
<string>要搜索的
varchar字符串。
返回
integer 值。
示例
>SELECT POSITION('dps' in 'extremedps');
8SUBSTRING 或 SUBSTR
返回从指定位置开始的子字符串,如果指定了字符数,则返回该数量的字符。
字符串中的位置为 1。
语法
SUBSTRING(<string>[ from <position>] [for <length>] )
SUBSTR(<string>[ from <position>] [for <length>] )
SUBSTR(<string>, <position> [, <length>])其中,SUBSTRING(<string>[ from <position>] [for <length>] ) 与 SUBSTR(<string>[ from <position>] [for <length>] ) 等效,SUBSTRING(<string> from <position> for <count>) 与 SUBSTR(<string>, <position> [, <count>]) 等效。
请注意,不支持 SUBSTRING(<string> for <length>) 或 SUBSTR(<string> for <length>)。
参数
-
<string>要搜索的
varchar字符串。 -
<position>指定子字符串开始的偏移量
integer表达式。 -
<length>指定子字符串的长度
integer表达式。
返回
varchar 值。
如果有任一参数为 null,将返回 null。
示例
SELECT SUBSTRING('Extreme DPS' from 3 for 3);
-> tre
SELECT SUBSTRING('Extreme DPS' from 3);
-> treme DPS
SELECT SUBSTR('null' from 3);
-> null
SELECT SUBSTR('alphabet', 3, 2);
-> phUPPER
将字符串中的所有字符转换为大写。
语法
UPPER(<string>)参数
<string>:要转换的 varchar 字符串。
返回值
varchar 值。
示例
SELECT UPPER('ExtremeDPS');
-> EXTREMEDPS其他字符串函数
Extreme DPS 还支持许多字符串处理函数。其中一些用于在上一个章节中描述的 SQL 字符串函数的实现。
本节详细介绍了 Extreme DPS 支持的每个 SQL 字符串函数和运算符。
ASCII
返回字符串第一个字符的 ASCII 码,或者如果使用 UTF8,则返回字符的 Unicode 码。
语法
ASCII(<string>)参数
<string>:将返回其第一个字符的 ASCII 码的字符串。
返回
integer 值。
如果 <string> 为 null,则返回 null。
示例
SELECT ASCII('xyz');
-> 120BTRIM
返回删除了前导和尾随字符的给定字符串。
语法
BTRIM(<string> [, <trimStr>])参数
-
<string>要修剪的
varchar字符串。 -
<trimStr>需要从
<string>的左右两侧删除的字符。<trimStr>的默认值是 ’ ‘。默认值下,将删除前导和尾随的空格。
返回值
varchar 值。
如果 <string> 为 null,则返回 null。
示例
SELECT BTRIM('xyxtrimyyx', 'xyz');
-> trim
SELECT BTRIM('xyxtrimyyx ', ' ');
-> xyxtrimyyxCHR
将 Unicode 码点转换为与输入 Unicode 匹配的字符。
对于 UTF8,参数被视为 Unicode 码点。对于其他多字节编码,参数必须指定 ASCII 字符。不允许使用 NULL(0)字符,因为文本数据类型无法存储此类字节。
语法
CHR(<integer>)参数
<integer>:要转换的 integer 表达式。
返回
varchar 值。
如果 <integer> 为 null,则返回 null。
示例
SELECT CHR(65);
-> ACONCAT
连接一个或多个字符串。
语法
CONCAT(<string1>[, ... <string n>])参数
<string n>:任何数据类型的字符串,用于连接。
返回
varchar 值。
如果任何字符串为 null,将被忽略。
示例
SELECT CONCAT('abcde', 2, NULL, 22);
-> abcde222INITCAP
返回输入字符串,其中每个单词的第一个字母为大写,其余部分为小写。
语法
INITCAP(<string>)参数
<string>:需要转换的字符串。
返回
varchar 值。
如果任何字符串为 null,将被忽略。
示例
SELECT INITCAP('welcome to maxir');
-> Welcome To MAXIRLEFT
返回字符串中指定数量的最左边的字符的子字符串。
语法
LEFT(<string>, <length>)参数
-
<string>要搜索的
text表达式。 -
<length>指定要返回的子字符串的长度的
integer表达式。如果
<length>是正整数,将返回最左边的<length>个字符。如果<length>是负数,将返回字符串中除了最右边的 -<length>个字符以外的所有字符。如果<length>为0,将返回 null。
返回
varchar 值。
示例
SELECT LEFT('abcde', 2);
-> abLENGTH
返回字符串中的字符数。
语法
LENGTH(<string>)参数
<string>:要计数字符数的 text 或 varchar 表达式。
返回
integer 值。
示例
SELECT LENGTH('extremedps');
-> 10LPAD
向字符串的左侧填充指定的字符,使字符串达到指定长度。如果字符串本身已经超过指定的长度,字符串将被截断。
语法
LPAD(<string>, <length> [, <pad>])参数
-
<string>需要处理的
text字符串。 -
<length>integer表达式,指定填充后的<string>包含的字符数量。 -
<pad>text表达式,用于填充<string>。<pad>的默认值为空格,表示在未指定<pad>的情况下,将在<string>左侧填充空格至指定长度。
返回
varchar 值。
示例
SELECT LPAD('hi', 5, 'xy');
-> xyxhiLTRIM
返回一个删除了前导字符的字符串。
语法
LTRIM(<string> [,<trimStr>])参数
-
<string>需要处理的
text字符串。 -
<trimStr>text子字符串。将从<string>的最左侧删除这个子字符串中的字符。<trimStr>的默认值是 ’ ‘,表示在未指定<trimStr>的情况下,将删除前导空格。
返回
varchar 值。
示例
SELECT LTRIM('zzzytest', 'xyz');
-> testQUOTE_LITERAL
将字符串用单引号括起来,以便将引用的字符串用作 SQL 语句字符串中的字面字符串。嵌入的单引号 (’) 和反斜杠 () 将被正确地加倍。
语法
QUOTE_LITERAL(<string>)参数
<string>:要用单引号引用的 text 字符串。
返回
varchar 值。
如果 <string> 为 null,则返回 null。
示例
SELECT QUOTE_LITERAL(E'O\'Reilly');
-> 'O''Reilly'QUOTE_NULLABLE
强制将给定值转换为文本,然后将其引用为字面量。嵌入的单引号 (’) 和反斜杠 () 将被正确地加倍。
语法
QUOTE_NULLABLE(<string>)参数
<string>:要引用的 text 字符串。
返回
varchar 值。
示例
SELECT QUOTE_NULLABLE(NULL);
-> NULLREPEAT
将字符串重复指定次数。
语法
REPEAT(<string>, <number>)参数
-
<string>要重复的
text字符串。 -
<number>integer表达式,指定<string>将重复的次数。
返回
varchar 值。
示例
SELECT REPEAT('DPS', 3);
-> DPSDPSDPSREPLACE
在字符串中将一个子字符串的所有出现替换为另一个子字符串。
语法
REPLACE(<string>, <sourceStr>, <targetStr>)参数
-
<string>text字符串。 -
<sourceStr>将被替换的
text子字符串。 -
<targetStr>用于替换
<sourceStr>的text子字符串。
返回
varchar 值。
示例
SELECT REPLACE('abcdefabcdef', 'cd', 'XX');
-> abXXefabXXefREVERSE
反转字符串中字符的顺序。
语法
REVERSE(<string>)参数
<string>:要反转的 text 或 varchar 字符串。
返回
varchar 值。
示例
SELECT REVERSE('abcde');
-> edcbaRIGHT
返回字符串中指定数量的最右边的字符的子字符串。
语法
RIGHT(<string>, <length>)参数
-
<string>要搜索的
text表达式。 -
<length>integer表达式,指定要返回的子字符串的长度。如果
<length>是正整数,将返回最右边的<length>个字符。如果<length>是负数,将返回字符串中除了最左边的 -length 个字符以外的所有字符。如果<length>是0,将返回 null。
返回
varchar 值。
示例
SELECT RIGHT('abcde', 2);
-> deRPAD
向字符串的右侧填充指定的字符,使字符串由指定数量的字符组成。如果字符串已经超过指定的长度,字符串将被截断。
语法
RPAD(<string>, <length> [, <pad>])参数
-
<string>要填充的
text字符串。 -
<length>integer表达式,指定填充后的<string>将由多少个字符组成。 -
<pad>text表达式,用于填充<string>。<pad>的默认值是空格。这表示如果未指定<pad>,将在<string>填充空格。
返回
varchar 值。
示例
SELECT RPAD('hi', 5, 'xy');
-> hixyxRTRIM
返回一个删除了尾随字符的字符串。
语法
RTRIM(<string>[, <trimStr>])参数
-
<string>要修剪的
text字符串。 -
<trimStr>text子字符串。将从<string>的后面删除这个子字符串中的字符。<trimStr>的默认值是 ’ ‘。这表示如果未指定<trimStr>,将删除尾随空格。
返回
varchar 值。
示例
SELECT RTRIM('testxxzx', 'xyz');
-> testSPLIT_PART
在指定的分隔符出现处拆分字符串,并返回请求的部分。
语法
SPLIT_PART(<string>, <delimiter>, <partNum>)参数
-
<string>要拆分的
text字符串。 -
<delimiter>作为分隔符拆分
<string>的text表达式。 -
<partNum>integer表达式,指定将返回哪个部分。
返回
varchar 值。
如果 <partNum> 大于或等于 1,将返回 partNumth 部分。如果 <partNum> 是 0,将返回第一部分,结果与 1 相同。
示例
SELECT SPLIT_PART('abc~@~def~@~ghi', '~@~', 2);
-> defSTRPOS
返回子字符串在字符串中首次出现的位置。此函数等同于 POSITION(varchar in varchar)。
语法
STRPOS(<string>, <substring>)参数
-
<string>被搜索的
text字符串。 -
<substring>需要返回位置的
text子字符串。
返回
integer 值。
示例
SELECT STRPOS('high', 'ig');
-> 2STARTS_WITH
如果字符串以指定的前缀开头,则返回 true。
语法
STARTS_WITH(<string>, <prefix>)参数
-
<string>text字符串。 -
<prefix>指定前缀的
text表达式。
返回
boolean 值。
示例
SELECT STARTS_WITH('alphabet', 'alph');
-> t