一、邏輯操作符:
常用的邏輯操作符有:AND、OR和NOT。其語義與其它編程語言中的邏輯操作符完全相同。
二、比較操作符:
下面是PostgreSQL中提供的比較操作符列表:
比較操作符可以用于所有可以比較的數據類型。所有比較操作符都是雙目操作符,且返回boolean類型。除了比較操作符以外,我們還可以使用BETWEEN語句,如:
a BETWEEN x AND y 等效于 a >= x AND a <= y
a NOT BETWEEN x AND y 等效于 a < x OR a > y
三、 數學函數和操作符:
下面是PostgreSQL中提供的數學操作符列表:
按位操作符只能用于整數類型,而其它的操作符可以用于全部數值數據類型。按位操作符還可以用于位串類型bit和bit varying,
下面是PostgreSQL中提供的數學函數列表,需要說明的是,這些函數中有許多都存在多種形式,區別只是參數類型不同。除非特別指明,任何特定形式的函數都返回和它的參數相同的數據類型。
三角函數列表:
四、字符串函數和操作符:
下面是PostgreSQL中提供的字符串操作符列表:
函數 |
返回類型 |
描述 |
例子 |
結果 |
string || string |
text |
字串連接 |
'Post' || 'greSQL' |
PostgreSQL |
bit_length(string) |
int |
字串里二進制位的個數 |
bit_length('jose') |
32 |
char_length(string) |
int |
字串中的字符個數 |
char_length('jose') |
4 |
convert(string using conversion_name) |
text |
使用指定的轉換名字改變編碼。 |
convert('PostgreSQL' using iso_8859_1_to_utf8) |
'PostgreSQL' |
lower(string) |
text |
把字串轉化為小寫 |
lower('TOM') |
tom |
octet_length(string) |
int |
字串中的字節數 |
octet_length('jose') |
4 |
overlay(string placing string from 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] [for int]) |
text |
抽取子字串 |
substring('Thomas' from 2 for 3) |
hom |
substring(string from pattern) |
text |
抽取匹配 POSIX 正則表達式的子字串 |
substring('Thomas' from '...$') |
mas |
substring(string from pattern for escape) |
text |
抽取匹配SQL正則表達式的子字串 |
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 |
ascii(text) |
int |
參數第一個字符的ASCII碼 |
ascii('x') |
120 |
btrim(string text [, characters text]) |
text |
從string開頭和結尾刪除只包含在characters里(缺省是空白)的字符的最長字串 |
btrim('xyxtrimyyx','xy') |
trim |
chr(int) |
text |
給出ASCII碼的字符 |
chr(65) |
A |
convert(string text, [src_encoding name,] dest_encoding name) |
text |
把字串轉換為dest_encoding |
convert( 'text_in_utf8', 'UTF8', 'LATIN1') |
以ISO 8859-1編碼表示的text_in_utf8 |
initcap(text) |
text |
把每個單詞的第一個子母轉為大寫,其它的保留小寫。單詞是一系列字母數字組成的字符,用非字母數字分隔。 |
initcap('hi thomas') |
Hi Thomas |
length(string text) |
int |
string中字符的數目 |
length('jose') |
4 |
lpad(string text, length int [, fill text]) |
text |
通過填充字符fill(缺省時為空白),把string填充為長度length。 如果string已經比length長則將其截斷(在右邊)。 |
lpad('hi', 5, 'xy') |
xyxhi |
ltrim(string text [, characters text]) |
text |
從字串string的開頭刪除只包含characters(缺省是一個空白)的最長的字串。 |
ltrim('zzzytrim','xyz') |
trim |
md5(string text) |
text |
計算給出string的MD5散列,以十六進制返回結果。 |
md5('abc') |
|
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 [, character text]) |
text |
從字串string的結尾刪除只包含character(缺省是個空白)的最長的字 |
rtrim('trimxxxx','x') |
trim |
split_part(string text, delimiter text, field int) |
text |
根據delimiter分隔string返回生成的第field個子字串(1 Base)。 |
split_part('abc~@~def~@~ghi', '~@~', 2) |
def |
strpos(string, substring) |
text |
聲明的子字串的位置。 |
strpos('high','ig') |
2 |
substr(string, from [, count]) |
text |
抽取子字串。 |
substr('alphabet', 3, 2) |
ph |
to_ascii(text [, encoding]) |
text |
把text從其它編碼轉換為ASCII。 |
to_ascii('Karel') |
Karel |
to_hex(number int/bigint) |
text |
把number轉換成其對應地十六進制表現形式。 |
to_hex(9223372036854775807) |
7fffffffffffffff |
translate(string text, from text, to text) |
text |
把在string中包含的任何匹配from中的字符的字符轉化為對應的在to中的字符。 |
translate('12345', '14', 'ax') |
a23x5 |
五、位串函數和操作符:
對于類型bit和bit varying,除了常用的比較操作符之外,還可以使用以下列表中由PostgreSQL提供的位串函數和操作符,其中&、|和#的位串操作數必須等長。在移位的時候,保留原始的位串的的長度。
除了以上列表中提及的操作符之外,位串還可以使用字符串函數:length, bit_length, octet_length, position, substring。此外,我們還可以在整數和bit之間來回轉換,如:
MyTest=# SELECT 44::bit(10);
bit
------------
0000101100
(1 row)
MyTest=# SELECT 44::bit(3);
bit
-----
100
(1 row)
MyTest=# SELECT cast(-44 as bit(12));
bit
--------------
111111010100
(1 row)
MyTest=# SELECT '1110'::bit(4)::integer;
int4
------
14
(1 row)
注意:如果只是轉換為"bit",意思是轉換成bit(1),因此只會轉換成整數的最低位。
該博客中提供的所有信息均源自PostgreSQL官方文檔,編寫該篇博客的主要目的是便于今后的查閱,特此聲明。