概述
GBase 8c提供的字符处理函数和操作符,主要用于字符串与字符串、字符串与非字符串之间的连接,以及字符串的模式匹配操作。字符串处理函数除了length相关函数,其他函数和操作符的参数不支持大于1GB的CLOB类型。按首字母顺序排序,显示GBase 8c支持的字符处理函数。
- ascii(string)
描述:参数string的第一个字符的ASCII码。
返回值类型:integer
示例:
gbase=# SELECT ascii('xyz');
ascii
-------
120
(1 row)
- bit_length(string)
描述:字符串的位数。
返回值类型:integer
示例:
gbase=# SELECT bit_length('world');
bit_length
------------
40
(1 row)
- btrim(string text [, characters text])
描述:从string开头和结尾删除只包含characters中字符(缺省是空白)的最长字符串。
返回值类型:text
示例:
gbase=# SELECT btrim('sring' , 'ing');
btrim
-------
sr
(1 row)
- char_length(string)或character_length(string)
描述:字符串中的字符个数。
返回值类型:int
示例:
gbase=# SELECT char_length('hello');
char_length
-------------
5
(1 row)
- chr(integer)
描述:给出ASCII码的字符。
返回值类型:varchar
示例:
gbase=# SELECT chr(65);
chr
-----
A
(1 row)
- concat(str1,str2)
描述:将字符串str1和str2连接并返回。
须知:
数据库SQL兼容模式设置为MY的情况下,参数str1或str2为NULL会导致返回结果为NULL。
返回值类型:varchar
示例:
gbase=# SELECT concat('Hello', ' World!');
concat
--------------
Hello World!
(1 row)
gbase=# SELECT concat('Hello', NULL);
concat
--------
Hello
(1 row)
- concat_ws(sep text, str"any" [, str"any" [, ...] ])
描述:以第一个参数为分隔符,链接第二个以后的所有参数。NULL参数被忽略。
须知:
n 如果第一个参数值是NULL,会导致返回结果为NULL。
n 如果第一个参数值是空字符串(''),且数据库SQL兼容模式设置为A的情况 下,会导致返回结果为NULL。这是因为A兼容模式>将''作为NULL处理,避免 此类行为,可以将数据库SQL兼容模式改为B、C或者PG。
返回值类型:text
示例:
gbase=# SELECT concat_ws(',', 'ABCDE', 2, NULL, 22);
concat_ws
------------
ABCDE,2,22
(1 row)
- convert(string bytea, src_encoding name, dest_encoding name)
描述:以dest_encoding指定的目标编码方式转化字符串bytea。src_encoding指定源编码方式,在该编码下,string必须是合法的。
返回值类型:bytea
示例:
gbase=# SELECT convert('text_in_utf8', 'UTF8', 'GBK');
convert
----------------------------
x746578745f696e5f75746638
(1 row)
如GBK和LATIN1之间的转换规则是不存在的,具体转换规则可以通过查看系统表pg_conversion获得。
示例:
gbase=# show server_encoding;
server_encoding
-----------------
SQL_ASCII
(1 row)
gbase=# SELECT convert_from('some text', 'GBK');
convert_from
--------------
some text
(1 row)
gbase=# SELECT convert_to('some text', 'GBK');
convert_to
----------------------
x736f6d652074657874
(1 row)
db_latin1=# SELECT convert('some text', 'GBK', 'LATIN1');
convert
----------------------
x736f6d652074657874
(1 row)
- convert_from(string bytea, src_encoding name)
描述:以数据库的编码方式转化字符串bytea。
src_encoding指定源编码方式,在该编码下,string必须是合法的。
返回值类型:text
示例:
gbase=# SELECT convert_from('text_in_utf8', 'UTF8');
convert_from
--------------
text_in_utf8
(1 row)
l convert_to(string text, dest_encoding name)
描述:将字符串转化为dest_encoding的编码格式。
返回值类型:bytea
示例:
gbase=# SELECT convert_to('some text', 'UTF8');
convert_to
----------------------
x736f6d652074657874
(1 row)
- decode(string text, format text)
描述:将二进制数据从文本数据中解码。
返回值类型:bytea
示例:
gbase=# SELECT decode('MTIzAAE=', 'base64');
decode
--------------
x3132330001
(1 row)
- encode(data bytea, format text)
描述:将二进制数据编码为文本数据。
返回值类型:text
示例:
gbase=# SELECT encode(E'123\000\001', 'base64');
encode
----------
MTIzAAE=
(1 row)
n 若字符串中存在换行符,如字符串由一个换行符和一个空格组成,在GBase 8c中LENGTH和LENGTHB的值为2。
n 对于CHAR(n)类型,n是指字符个数。因此,对于多字节编码的字符集,LENGTHB函数返回的长度可能大于n。
GBase 8c目前支持多种类型的数据库,目前有4种,分别是A类型,B类型,C类型以PG类型。不指定数据库类型时,默认为A类型。A的词法分析器与另外三种不一样,在A中空字符串会被当作是NULL。所以,当使用A类型的数据库时,假如上述字符操作函数中有空字符串作为参数,会出现没有输出的情况。例如:
gbase=# SELECT translate('12345','123','');
translate
-----------
(1 row)
这是因为内核在调用相应的函数进行处理前,会判断所输入的参数中是否含有NULL,假如有,则不会调用相应的函数,因此会没有输出。而在PG模式下,字符串的处理方式与postgresql保持一致,因此不会有上述问题产生。
- format(formatstr text [, str"any" [, ...] ])
描述:格式化字符串。
返回值类型:text
示例:
gbase=# SELECT format('Hello %s, %1$s', 'World');
format
--------------------
Hello World, World
(1 row)
最后
以上就是瘦瘦歌曲为你收集整理的GBase 8c 函数和操作符 - 字符处理函数和操作符 之 A-G的全部内容,希望文章能够帮你解决GBase 8c 函数和操作符 - 字符处理函数和操作符 之 A-G所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复