本节描述了用于检查和操作字符串数值的函数和操作符. 在这个环境中的字串包括所有类型 CHARACTER, CHARACTER VARYING,和 TEXT 的值.除非另外说明,所有下面列出的函数都可以处理这些类型, 不过要小心的是,在使用 CHARACTER 类型的时候, 它的自动填充的潜在影响.通常这里描述的函数也能用于非字串 类型,此时它首先把那些数据转化为字串表现形式. 有些函数还可以处理位串类型.
SQL 定义了一些字串函数, 它们有指定的语法,它们里面是用 某种特定的关键字,而不是逗号来分隔参数. 详情请见Table 4-6, 这些函数也用正常的函数调用说法实现了. (参阅 Table 4-7.)
函数 | 返回类型 | 描述 | 例子 | 结果 |
---|---|---|---|---|
string || string | text | 字串连接 | 'Postgre' || 'SQL' | PostgreSQL |
char_length(string) or character_length(string) | integer | 字串长度 | char_length('jose') | 4 |
lower(string) | text | 把字串转化为小写 | lower('TOM') | tom |
octet_length(string) | integer | 字串中的字节数 | octet_length('jose') | 4 |
position(substring in string) | integer | 声明的子字串的位置 | position('om' in 'Thomas') | 3 |
substring(string [from integer] [for integer]) | text | 抽取子字串 | substring('Thomas' from 2 for 3) | oma |
trim([leading | trailing | both] [characters] from string) | text | 从字串 string 的 开头/结尾/两边/ 删除只包含 characters (缺省是一个空白)的最长的字串. | trim(both 'x' from 'xTomx') | Tom |
upper(string) | text | 把字串转化为大写. | upper('tom') | TOM |
还有额外的字串操作函数可以用,它们在下面列出. 它们有些在内部用于实现上面列出的SQL字串函数.
函数 | 返回类型 | 描述 | 例子 | 结果 |
---|---|---|---|---|
ascii(text) | integer | 返回参数第一个字符的 ASCII 码 | ascii('x') | 120 |
btrim(string text, trim text) | text | 从 string 开头和结尾删除 只包含在 trim 里的字符的最长字串. | btrim('xyxtrimyyx','xy') | trim |
chr(integer) | text | 返回给出 ASCII 码的字符 | chr(65) | A |
initcap(text) | text | 把每个单词(空白分隔)的第一个子母转为大写 | initcap('hi thomas') | Hi Thomas |
lpad(string text, length integer [, fill text]) | text | 通过填充字符 fill (缺省时为空白), 把 string 填充为长度 length. 如果 string 已经比 length 长则将其截断(在右边). | lpad('hi', 5, 'xy') | xyxhi |
ltrim(string text, trim text) | text | 从字串 string 的 开头 删除只包含 trim 的最长的字串. | ltrim('zzzytrim','xyz') | trim |
repeat(text, integer) | text | 重复 text 一定次数. | repeat('Pg', 4) | PgPgPgPg |
rpad(string text, length integer [, fill text]) | text | 通过填充字符 fill (缺省时为空白), 把 string 填充为长度 length. 如果 string 已经比 length 长则将其截断. | rpad('hi', 5, 'xy') | hixyx |
rtrim(string text, trim text) | text | 从字串 string 的 结尾 删除只包含 trim 的最长的字串. | rtrim('trimxxxx','x') | trim |
strpos(string, substring) | text | 定位声明的子字串.(和 position(substring in string一样),不过要注意参数顺序 是相反的) | strpos('high','ig') | 2 |
substr(string, from [, count]) | text | 抽取声明的子字串.(和 substring(string from from for count)一样) | substr('alphabet', 3, 2) | ph |
to_ascii(text [, encoding]) | text | 把多字节文本编码转换为 ASCII. | to_ascii('Karel') | |
translate(string text, from text, to text) | text | 把在 string 中包含的任何匹配 from 中的字符的字符转化为对应的 在 to 中的字符. | translate('12345', '14', 'ax') | a23x5 |
to_ascii 函数支持从 LATIN1,LATIN, WIN1250(CP1250)的转化.