原文链接:
本节描述了用于检查和操作字符串数值的函数和操作符。在这个环境中的字符串包括所有 character, character varying, text 类型的值。除非另外说明,所有下面列出的函数都可以处理这些类型,不过要小心的是,在使用 character 类型的时候,需要注意自动填充的潜在影响。通常这里描述的函数也能用于非字符串类型,我们只要先把那些数据转化为字符串表现形式就可以了。有些函数还可以处理位串类型。
SQL 定义了一些字符串函数,它们有指定的语法(用特定的关键字而不是逗号来分隔参数)。详情请见表9-5,这些函数也用正常的函数调用语法实现了(参阅表9-6)。
表9-7获取可用的转换名。
convert('PostgreSQL' using iso_8859_1_to_utf8) |
UTF8编码的'PostgreSQL' |
lower(string) |
text |
把字符串转化为小写 |
lower('TOM') |
tom |
octet_length(string) |
int |
字符串中的字节数 |
octet_length('jose') |
4 |
overlay(string placing stringfrom int [for int]) |
text |
替换子字符串 |
overlay('Txxxxas' placing 'hom' from 2 for 4) |
Thomas |
position(substring in string) |
int |
指定的子字符串的位置 |
position('om' in 'Thomas') |
3 |
substring(string [from int] [forint]) |
text |
抽取子字符串 |
substring('Thomas' from 2 for 3) |
hom |
substring(string from pattern) |
text |
抽取匹配 POSIX 正则表达式的子字符串。参见节9.7获取更多关于模式匹配的信息。 |
substring('Thomas' from '...$') |
mas |
substring(string from pattern forescape) |
text |
抽取匹配 SQL 正则表达式的子字符串。参见节9.7获取更多关于模式匹配的信息。 |
substring('Thomas' from '%#"o_a#"_' for '#') |
oma |
trim([leading | trailing | both] [characters] from string) |
text |
从字符串 string 的开头/结尾/两边删除只包含 characters 中字符(缺省是一个空白)的最长的字符串 |
trim(both 'x' from 'xTomxx') |
Tom |
upper(string) |
text |
把字符串转化为大写 |
upper('tom') |
TOM |
还有额外的字符串操作函数可以用,它们在表9-6列出。它们有些在内部用于实现表9-5列出的 SQL 标准字符串函数。
节9.7以获取更多模式匹配的信息。
regexp_replace('Thomas', '.[mN]a.', 'M') |
ThM |
repeat(string text, number int) |
text |
将 string 重复 number 次 |
repeat('Pg', 4) |
PgPgPgPg |
replace(string text, from text,to text) |
text |
把字符串 string 里出现地所有子字符串 from 替换成子字符串 to |
replace( 'abcdefabcdef', 'cd', 'XX') |
abXXefabXXef |
rpad(string text, length int [,fill text]) |
text |
使用填充字符 fill(缺省时为空白),把 string 填充到 length 长度。如果string 已经比 length 长则将其从尾部截断。 |
rpad('hi', 5, 'xy') |
hixyx |
rtrim(string text [, characterstext]) |
text |
从字符串 string 的结尾删除只包含 characters 中字符(缺省是个空白)的最长的字符串。 |
rtrim('trimxxxx', 'x') |
trim |
split_part(string text,delimiter text, field int) |
text |
根据 delimiter 分隔 string 返回生成的第 field 个子字符串(1为基)。 |
split_part('abc~@~def~@~ghi', '~@~', 2) |
def |
strpos(string, substring) |
int |
指定的子字符串的位置。和 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(string text [, encodingtext]) |
text |
把 string 从其它编码转换为 ASCII (仅支持 LATIN1, LATIN2, LATIN9, WIN1250编码)。 |
to_ascii('Karel') |
Karel |
to_hex(number int 或 bigint) |
text |
把 number 转换成十六进制表现形式 |
to_hex(2147483647) |
7fffffff |
translate(string text, fromtext, to text) |
text |
把在 string 中包含的任何匹配 from 中字符的字符转化为对应的在 to 中的字符 |
translate('12345', '14', 'ax') |
a23x5 |
源编码 | 目的编码 |
| ascii_to_mic |
SQL_ASCII |
MULE_INTERNAL |
| ascii_to_utf8 |
SQL_ASCII |
UTF8 |
| big5_to_euc_tw |
BIG5 |
EUC_TW |
| big5_to_mic |
BIG5 |
MULE_INTERNAL |
| big5_to_utf8 |
BIG5 |
UTF8 |
| euc_cn_to_mic |
EUC_CN |
MULE_INTERNAL |
| euc_cn_to_utf8 |
EUC_CN |
UTF8 |
| euc_jp_to_mic |
EUC_JP |
MULE_INTERNAL |
| euc_jp_to_sjis |
EUC_JP |
SJIS |
| euc_jp_to_utf8 |
EUC_JP |
UTF8 |
| euc_kr_to_mic |
EUC_KR |
MULE_INTERNAL |
| euc_kr_to_utf8 |
EUC_KR |
UTF8 |
| euc_tw_to_big5 |
EUC_TW |
BIG5 |
| euc_tw_to_mic |
EUC_TW |
MULE_INTERNAL |
| euc_tw_to_utf8 |
EUC_TW |
UTF8 |
| gb18030_to_utf8 |
GB18030 |
UTF8 |
| gbk_to_utf8 |
GBK |
UTF8 |
| iso_8859_10_to_utf8 |
LATIN6 |
UTF8 |
| iso_8859_13_to_utf8 |
LATIN7 |
UTF8 |
| iso_8859_14_to_utf8 |
LATIN8 |
UTF8 |
| iso_8859_15_to_utf8 |
LATIN9 |
UTF8 |
| iso_8859_16_to_utf8 |
LATIN10 |
UTF8 |
| iso_8859_1_to_mic |
LATIN1 |
MULE_INTERNAL |
| iso_8859_1_to_utf8 |
LATIN1 |
UTF8 |
| iso_8859_2_to_mic |
LATIN2 |
MULE_INTERNAL |
| iso_8859_2_to_utf8 |
LATIN2 |
UTF8 |
| iso_8859_2_to_windows_1250 |
LATIN2 |
WIN1250 |
| iso_8859_3_to_mic |
LATIN3 |
MULE_INTERNAL |
| iso_8859_3_to_utf8 |
LATIN3 |
UTF8 |
| iso_8859_4_to_mic |
LATIN4 |
MULE_INTERNAL |
| iso_8859_4_to_utf8 |
LATIN4 |
UTF8 |
| iso_8859_5_to_koi8_r |
ISO_8859_5 |
KOI8 |
| iso_8859_5_to_mic |
ISO_8859_5 |
MULE_INTERNAL |
| iso_8859_5_to_utf8 |
ISO_8859_5 |
UTF8 |
| iso_8859_5_to_windows_1251 |
ISO_8859_5 |
WIN1251 |
| iso_8859_5_to_windows_866 |
ISO_8859_5 |
WIN866 |
| iso_8859_6_to_utf8 |
ISO_8859_6 |
UTF8 |
| iso_8859_7_to_utf8 |
ISO_8859_7 |
UTF8 |
| iso_8859_8_to_utf8 |
ISO_8859_8 |
UTF8 |
| iso_8859_9_to_utf8 |
LATIN5 |
UTF8 |
| johab_to_utf8 |
JOHAB |
UTF8 |
| koi8_r_to_iso_8859_5 |
KOI8 |
ISO_8859_5 |
| koi8_r_to_mic |
KOI8 |
MULE_INTERNAL |
| koi8_r_to_utf8 |
KOI8 |
UTF8 |
| koi8_r_to_windows_1251 |
KOI8 |
WIN1251 |
| koi8_r_to_windows_866 |
KOI8 |
WIN866 |
| mic_to_ascii |
MULE_INTERNAL |
SQL_ASCII |
| mic_to_big5 |
MULE_INTERNAL |
BIG5 |
| mic_to_euc_cn |
MULE_INTERNAL |
EUC_CN |
| mic_to_euc_jp |
MULE_INTERNAL |
EUC_JP |
| mic_to_euc_kr |
MULE_INTERNAL |
EUC_KR |
| mic_to_euc_tw |
MULE_INTERNAL |
EUC_TW |
| mic_to_iso_8859_1 |
MULE_INTERNAL |
LATIN1 |
| mic_to_iso_8859_2 |
MULE_INTERNAL |
LATIN2 |
| mic_to_iso_8859_3 |
MULE_INTERNAL |
LATIN3 |
| mic_to_iso_8859_4 |
MULE_INTERNAL |
LATIN4 |
| mic_to_iso_8859_5 |
MULE_INTERNAL |
ISO_8859_5 |
| mic_to_koi8_r |
MULE_INTERNAL |
KOI8 |
| mic_to_sjis |
MULE_INTERNAL |
SJIS |
| mic_to_windows_1250 |
MULE_INTERNAL |
WIN1250 |
| mic_to_windows_1251 |
MULE_INTERNAL |
WIN1251 |
| mic_to_windows_866 |
MULE_INTERNAL |
WIN866 |
| sjis_to_euc_jp |
SJIS |
EUC_JP |
| sjis_to_mic |
SJIS |
MULE_INTERNAL |
| sjis_to_utf8 |
SJIS |
UTF8 |
| tcvn_to_utf8 |
WIN1258 |
UTF8 |
| uhc_to_utf8 |
UHC |
UTF8 |
| utf8_to_ascii |
UTF8 |
SQL_ASCII |
| utf8_to_big5 |
UTF8 |
BIG5 |
| utf8_to_euc_cn |
UTF8 |
EUC_CN |
| utf8_to_euc_jp |
UTF8 |
EUC_JP |
| utf8_to_euc_kr |
UTF8 |
EUC_KR |
| utf8_to_euc_tw |
UTF8 |
EUC_TW |
| utf8_to_gb18030 |
UTF8 |
GB18030 |
| utf8_to_gbk |
UTF8 |
GBK |
| utf8_to_iso_8859_1 |
UTF8 |
LATIN1 |
| utf8_to_iso_8859_10 |
UTF8 |
LATIN6 |
| utf8_to_iso_8859_13 |
UTF8 |
LATIN7 |
| utf8_to_iso_8859_14 |
UTF8 |
LATIN8 |
| utf8_to_iso_8859_15 |
UTF8 |
LATIN9 |
| utf8_to_iso_8859_16 |
UTF8 |
LATIN10 |
| utf8_to_iso_8859_2 |
UTF8 |
LATIN2 |
| utf8_to_iso_8859_3 |
UTF8 |
LATIN3 |
| utf8_to_iso_8859_4 |
UTF8 |
LATIN4 |
| utf8_to_iso_8859_5 |
UTF8 |
ISO_8859_5 |
| utf8_to_iso_8859_6 |
UTF8 |
ISO_8859_6 |
| utf8_to_iso_8859_7 |
UTF8 |
ISO_8859_7 |
| utf8_to_iso_8859_8 |
UTF8 |
ISO_8859_8 |
| utf8_to_iso_8859_9 |
UTF8 |
LATIN5 |
| utf8_to_johab |
UTF8 |
JOHAB |
| utf8_to_koi8_r |
UTF8 |
KOI8 |
| utf8_to_sjis |
UTF8 |
SJIS |
| utf8_to_tcvn |
UTF8 |
WIN1258 |
| utf8_to_uhc |
UTF8 |
UHC |
| utf8_to_windows_1250 |
UTF8 |
WIN1250 |
| utf8_to_windows_1251 |
UTF8 |
WIN1251 |
| utf8_to_windows_1252 |
UTF8 |
WIN1252 |
| utf8_to_windows_1253 |
UTF8 |
WIN1253 |
| utf8_to_windows_1254 |
UTF8 |
WIN1254 |
| utf8_to_windows_1255 |
UTF8 |
WIN1255 |
| utf8_to_windows_1256 |
UTF8 |
WIN1256 |
| utf8_to_windows_1257 |
UTF8 |
WIN1257 |
| utf8_to_windows_866 |
UTF8 |
WIN866 |
| utf8_to_windows_874 |
UTF8 |
WIN874 |
| windows_1250_to_iso_8859_2 |
WIN1250 |
LATIN2 |
| windows_1250_to_mic |
WIN1250 |
MULE_INTERNAL |
| windows_1250_to_utf8 |
WIN1250 |
UTF8 |
| windows_1251_to_iso_8859_5 |
WIN1251 |
ISO_8859_5 |
| windows_1251_to_koi8_r |
WIN1251 |
KOI8 |
| windows_1251_to_mic |
WIN1251 |
MULE_INTERNAL |
| windows_1251_to_utf8 |
WIN1251 |
UTF8 |
| windows_1251_to_windows_866 |
WIN1251 |
WIN866 |
| windows_1252_to_utf8 |
WIN1252 |
UTF8 |
| windows_1256_to_utf8 |
WIN1256 |
UTF8 |
| windows_866_to_iso_8859_5 |
WIN866 |
ISO_8859_5 |
| windows_866_to_koi8_r |
WIN866 |
KOI8 |
| windows_866_to_mic |
WIN866 |
MULE_INTERNAL |
| windows_866_to_utf8 |
WIN866 |
UTF8 |
| windows_866_to_windows_1251 |
WIN866 |
WIN |
| windows_874_to_utf8 |
WIN874 |
UTF8 |
【注意】a. 转换名遵循一个标准的命名模式:将源编码中的所有非字母数字字符用下划线替换,后面跟着 _to_ ,然后后面再跟着经过同样处理的目标编码的名字。因此这些名字可能和客户的编码名字不同。 |