GBase 8c函数和操作符——字符处理函数和操作符(A-G)

字符处理函数和操作符

GBase 8c提供的字符处理函数和操作符,主要用于字符串与字符串、字符串与非字符串之间的连接,以及字符串的模式匹配操作。字符串处理函数除了length相关函数,其他函数和操作符的参数不支持大于1GB的CLOB类型。按首字母顺序排序,显示GBase 8c支持的字符处理函数。

A-G

l ascii(string)

描述:参数string的第一个字符的ASCII码。

返回值类型:integer

示例:

gbase=# SELECT ascii('xyz');

ascii

-------

120

(1 row)

l bit_length(string)

描述:字符串的位数。

返回值类型:integer

示例:

gbase=# SELECT bit_length('world');

bit_length

------------

40

(1 row)

l btrim(string text [, characters text])

描述:从string开头和结尾删除只包含characters中字符(缺省是空白)的最长字符串。

返回值类型:text

示例:

gbase=# SELECT btrim('sring' , 'ing');

btrim

-------

sr

(1 row)

l char_length(string)或character_length(string)

描述:字符串中的字符个数。

返回值类型:int

示例:

gbase=# SELECT char_length('hello');

char_length

-------------

5

(1 row)

l chr(integer)

描述:给出ASCII码的字符。

返回值类型:varchar

示例:

gbase=# SELECT chr(65);

chr

-----

A

(1 row)

l 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)

l 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)

l 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)

l 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)

l decode(string text, format text)

描述:将二进制数据从文本数据中解码。

返回值类型:bytea

示例:

gbase=# SELECT decode('MTIzAAE=', 'base64');

decode

--------------

\x3132330001

(1 row)

l 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保持一致,因此不会有上述问题产生。

l format(formatstr text [, str"any" [, ...] ])

描述:格式化字符串。

返回值类型:text

示例:

gbase=# SELECT format('Hello %s, %1$s', 'World');

       format

--------------------

 Hello World, World

(1 row)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值