postgresql——字串函數

來源:互聯網
上載者:User

標籤:har   字串替換   指定   倒數   abc   select   std   rom   替換   

字串函數:

postgresql中的字串函數有:計算字串長度函數、字串合并函數、字串替換函數、字串比較函數、尋找指定字串位置函數等。



1、計算字串字元數和字串長度的函數:char_length(str)和length(str)

char_length(str)傳回值為字串str所包含的字元個數。一個多位元組字元算作一個單字元。


例子:使用char_lengthFunction Compute字串字元個數,如:


testdb=# select char_length('date'),char_length('zhang');

 char_length | char_length 

-------------+-------------

           4 |           5

(1 row)


length(str)傳回值為字串的位元組長度,使用utf8編碼字元集時,一個漢字是3位元組,一個數字或字母算一個位元組。

testdb=# select length('date'),length('zhang');

 length | length 

--------+--------

      4 |      5

(1 row)


注意:length函數的計算結果和char_length函數相同,因為英文字元的個數和所佔位元組相同,一個字元佔一個位元組。


2、合并字串函數:concat(s1,s2,,,,)、concat_ws(x,s1,s2,,,,)

  concat(s1,s2,,,)返回結果為串連參數產生的字串。任何一個參數為null,傳回值就為null。如果所有參數為非二進位字串,那麼結果為非二進位字串。如果自變數中含有任一二進位字串,那麼結果就為一個二進位字串。

concat_ws(x,s1,s2,,,)x是與其他參數的分隔字元。


例子:使用concat函數連接字串,如下:

testdb=# select concat('postgresql','9.6'),concat('postgresql',null,'testdb');

    concat     |      concat      

---------------+------------------

 postgresql9.6 | postgresqltestdb

(1 row)



例子:使用concat_ws函數串連帶分隔字元的字串,如:

testdb=# select concat_ws('_','postgresql','9.6'),concat_ws('**','postgresql',null,'testdb');

   concat_ws    |     concat_ws      

----------------+--------------------

 postgresql_9.6 | postgresql**testdb

(1 row)



3、擷取指定長度的字串的函數:left(s,n)和right(s,n)

left(s,n)返回字串s開始的最左邊n個字元。


例子:使用left函數返回字串中左邊開始的5個字元,如

testdb=# select  left('football',5);

 left  

-------

 footb

(1 row)


right(s,n)返回字串s最右邊個字元


例子:使用right函數返回字串中右邊的字元,如:

testdb=# select  right('football',4);

 right 

-------

 ball

(1 row)


4、填充字串的函數:lpad(s1,len,s2)和rpad(s1,len,s2)

lpad(s1,len,s2)返回字串s1,其左邊由字元s2填充,填充長度為len,加入s1的長度大於len,則傳回值被縮短至len字元。


例子:使用lpad函數對字串進行填充操作,如下:


testdb=# select lpad('hello',4,'??'),lpad('hello',10,'??');

 lpad |    lpad    

------+------------

 hell | ?????hello

(1 row)


rpad(s1,len,s2)返回字串s1,其右邊被字串s2填補至len字元長度。假如字串的長度大於len,則傳回值被縮短到與len字元相同的長度。


例子:使用rpad函數對字串進行填充操作,如:

testdb=# select rpad('hello',4,'?'),rpad('hello',10,'?');

 rpad |    rpad    

------+------------

 hell | hello?????

(1 row)


5、刪除空格的函數:ltrim(s)、rtrim(s)和trim(s)

ltrim(s)返回字串s,字串左側空白字元被刪除。


例子:使用ltrim函數刪除字串左邊的空格,如:

testdb=# select '( book )',concat('(',ltrim(' book '),')');

 ?column? | concat  

----------+---------

 ( book ) | (book )

(1 row)


rtrim(s)返回字串s,字串右側空白字元被刪除。


例子:使用rtrim函數刪除字串右邊的空格,如:


testdb=# select '( book )',concat('(',rtrim(' book '),')');

 ?column? | concat  

----------+---------

 ( book ) | ( book)

(1 row)


trim(s)刪除字串s兩側的空格。


例子:使用trim函數刪除指定字串兩端的空格,如:

testdb=# select '( book )',concat('(',trim(' book '),')');

 ?column? | concat 

----------+--------

 ( book ) | (book)

(1 row)


6、刪除指定字串的函數:trim(s1 from s)


trim(s1 from s)刪除字串s中兩端所有的子字串s1.s1為可選項,在未指定情況下刪除空格。


例子:使用trim(s1 from s)函數刪除字串中兩端指定的字元,如:

testdb=# select trim('zh' from 'zhanghellzhnihao');

     btrim      

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

 anghellzhnihao

(1 row)


7、重複產生字串的函數:repeat(s,n)

repeat(s,n)返回一個由重複的字串s組成的字串,n表示重複產生的次數。若n<=0,則返回一個Null 字元串;若s或n為null,則返回null。


例子:使用repeat函數重複產生相同的字串,如:

testdb=# select repeat('zhang',3);

     repeat      

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

 zhangzhangzhang

(1 row)


8、替換函數:replace(s,s1,s2)

replace(s,s1,s2)使用字串s2替代字串s中所有字串s1.


例子:使用replace函數進行字串替代操作。

testdb=# select replace('www.baidu.com','w','z');

    replace    

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

 zzz.baidu.com

(1 row)


9、擷取子串的函數:substring(s,n,len)

substring(s,n,len)表示從字串s返回一個長度為len的子字串,起始於位置n。也可能對n使用一個負值。假若這樣,則子字串的位置起始於字串結尾的n的字元,即倒數第n個字元。

testdb=# select substring('zhanghello',5) as a1,substring('zhanghello',5,3) as a2,substring('lunch',-3) as a3;

   a1   | a2  |  a3   

--------+-----+-------

 ghello | ghe | lunch

(1 row)


注意:如果對len使用的是一個小於1的值,那麼結果始終為整個字串。


10、匹配子串開始位置的函數:position(str1  in  str)

position(str1  in  str)函數的作用是返回子字串str1在字串str中的開始位置。


例子:使用position函數尋找字串中指定str1在字串的開始位置,如:

testdb=#  select position('ball' in 'football');

 position 

----------

        5

(1 row)


11、字串逆序函數:reverse(s)

reverse(s)將字串s反轉,返回的字串的順序和s字元順序相反。


例子:使用reverse函數反轉字串,如:

testdb=# select reverse('abc');

 reverse 

---------

 cba

(1 row)


postgresql——字串函數

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.