一、逻辑操作符:@H_301_4@@H_301_4@
常用的逻辑操作符有:AND@H_301_4@、OR@H_301_4@和NOT@H_301_4@。其语义与其它编程语言中的逻辑操作符完全相同。
二、比较操作符:@H_301_4@@H_301_4@
下面是Postgresql中提供的比较操作符列表:
@H_301_4@
操作符@H_301_4@@H_301_4@ | 描述@H_301_4@@H_301_4@ |
<@H_301_4@ | 小于@H_301_4@ |
>@H_301_4@ | 大于@H_301_4@ |
<=@H_301_4@ | 小于或等于@H_301_4@ |
>=@H_301_4@ | 大于或等于@H_301_4@ |
=@H_301_4@ | 等于@H_301_4@ |
!=@H_301_4@ | 不等于@H_301_4@ |
比较操作符可以用于所有可以比较的数据类型。所有比较操作符都是双目操作符,且返回boolean类型。除了比较操作符以外,我们还可以使用BETWEEN语句,如:@H_301_4@
aBETWEENxANDy等效于@H_301_4@a >= xANDa <= y
aNOT BETWEENxANDy等效于@H_301_4@a < xORa > y
三、 数学函数和操作符:@H_301_4@@H_301_4@
下面是Postgresql中提供的数学操作符列表:@H_301_4@
描述@H_301_4@@H_301_4@ | 例子@H_301_4@@H_301_4@ | 结果@H_301_4@@H_301_4@ | ||||||
+@H_301_4@ | 加@H_301_4@ | 2 + 3@H_301_4@ | 5@H_301_4@ | |||||
-@H_301_4@ | 减@H_301_4@ | 2 - 3@H_301_4@ | -1@H_301_4@ | |||||
*@H_301_4@ | 乘@H_301_4@ | 2 * 3@H_301_4@ | 6@H_301_4@ | |||||
/@H_301_4@ | 除@H_301_4@ | 4 / 2@H_301_4@ | 2@H_301_4@ | |||||
%@H_301_4@ | 模@H_301_4@ | 5 % 4@H_301_4@ | 1@H_301_4@ | |||||
^@H_301_4@ | 幂@H_301_4@ | 2.0 ^ 3.0@H_301_4@ | 8@H_301_4@ | |||||
|/@H_301_4@ | 平方根@H_301_4@ | |/ 25.0@H_301_4@ | ||/@H_301_4@ | 立方根@H_301_4@ | ||/ 27.0@H_301_4@ | 3@H_301_4@ | ||
!@H_301_4@ | 阶乘@H_301_4@ | 5 !@H_301_4@ | 120@H_301_4@ | |||||
!!@H_301_4@ | !! 5@H_301_4@ | @@H_301_4@ | 绝对值@H_301_4@ | @ -5.0@H_301_4@ | &@H_301_4@ | 按位AND@H_301_4@ | 91 & 15@H_301_4@ | 11@H_301_4@ |
|@H_301_4@ | 按位OR@H_301_4@ | 32 | 3@H_301_4@ | 35@H_301_4@ | |||||
#@H_301_4@ | 按位XOR@H_301_4@ | 17 # 5@H_301_4@ | 20@H_301_4@ | |||||
~@H_301_4@ | 按位NOT@H_301_4@ | ~1@H_301_4@ | -2@H_301_4@ | |||||
<<@H_301_4@ | 按位左移@H_301_4@ | 1 << 4@H_301_4@ | 16@H_301_4@ | |||||
>>@H_301_4@ | 按位右移@H_301_4@ | 8 >> 2@H_301_4@ | 2@H_301_4@ |
按位操作符只能用于整数类型,而其它的操作符可以用于全部数值数据类型。按位操作符还可以用于位串类型bit和bit varying,
下面是Postgresql中提供的数学函数列表,需要说明的是,这些函数中有许多都存在多种形式,区别只是参数类型不同。除非特别指明,任何特定形式的函数都返回和它的参数相同的数据类型。
函数@H_301_4@@H_301_4@ | 返回类型 @H_301_4@@H_301_4@ |
例子 @H_301_4@@H_301_4@ |
abs(x)@H_301_4@ | abs(-17.4)@H_301_4@ | 17.4@H_301_4@ | |
cbrt(double)@H_301_4@ | cbrt(27.0)@H_301_4@ | ceil(double/numeric)@H_301_4@ | 不小于参数的最小的整数@H_301_4@ | ceil(-42.8)@H_301_4@ | -42@H_301_4@ | |
degrees(double) @H_301_4@ |
把弧度转为角度@H_301_4@ | degrees(0.5)@H_301_4@ | 28.6478897565412@H_301_4@ | |||
exp(double/numeric)@H_301_4@ | 自然指数@H_301_4@ | exp(1.0)@H_301_4@ | 2.71828182845905@H_301_4@ | |||
floor(double/numeric)@H_301_4@ | 不大于参数的最大整数@H_301_4@ | floor(-42.8)@H_301_4@ | -43@H_301_4@ | |||
ln(double/numeric)@H_301_4@ | 自然对数@H_301_4@ | ln(2.0)@H_301_4@ | 0.693147180559945@H_301_4@ | |||
log(double/numeric)@H_301_4@ | 10为底的对数@H_301_4@ | log(100.0)@H_301_4@ | log(b numeric,x numeric)@H_301_4@ | numeric指定底数的对数@H_301_4@ | log(2.0,64.0)@H_301_4@ | 6.0000000000@H_301_4@ |
mod(y,x)@H_301_4@ | 取余数@H_301_4@ | mod(9,4)@H_301_4@ | pi() @H_301_4@ |
double@H_301_4@ | "π"常量@H_301_4@ | 3.14159265358979@H_301_4@ |
power(a double,b double)@H_301_4@ | 求a的b次幂@H_301_4@ | power(9.0,3.0)@H_301_4@ | 729@H_301_4@ | |||
power(a numeric,b numeric)@H_301_4@ | numeric@H_301_4@ | radians(double)@H_301_4@ | 把角度转为弧度@H_301_4@ | radians(45.0)@H_301_4@ | 0.785398163397448@H_301_4@ | |
random()@H_301_4@ | 0.0到1.0之间的随机数值@H_301_4@ | |||||
round(double/numeric)@H_301_4@ | 圆整为最接近的整数@H_301_4@ | round(42.4)@H_301_4@ | 42@H_301_4@ | |||
round(v numeric,s int)@H_301_4@ | 圆整为s位小数数字@H_301_4@ | round(42.438,2)@H_301_4@ | 42.44@H_301_4@ | |||
sign(double/numeric)@H_301_4@ | 参数的符号(-1,+1) @H_301_4@ |
sign(-8.4)@H_301_4@ | sqrt(double/numeric)@H_301_4@ | sqrt(2.0)@H_301_4@ | 1.4142135623731@H_301_4@ | |
trunc(double/numeric)@H_301_4@ | 截断(向零靠近)@H_301_4@ | trunc(42.8)@H_301_4@ | trunc(v numeric,255); font-size:13px">截断为s小数位置的数字@H_301_4@ | trunc(42.438,255); font-size:13px">42.43@H_301_4@ |
描述@H_301_4@ | |
acos(x)@H_301_4@ | 反余弦@H_301_4@ |
asin(x)@H_301_4@ | 反正弦@H_301_4@ |
atan(x)@H_301_4@ | 反正切@H_301_4@ |
atan2(x,y)@H_301_4@ | 正切 y/x 的反函数@H_301_4@ |
cos(x)@H_301_4@ | 余弦@H_301_4@ |
cot(x)@H_301_4@ | 余切@H_301_4@ |
sin(x)@H_301_4@ | 正弦@H_301_4@ |
tan(x)@H_301_4@ | 正切@H_301_4@ |
四、字符串函数和操作符:@H_301_4@@H_301_4@
下面是Postgresql中提供的字符串操作符列表:
函数@H_301_4@ | 返回类型@H_301_4@ | 描述@H_301_4@ | 例子@H_301_4@ | 结果@H_301_4@ | |||
string || string@H_301_4@ | text@H_301_4@ | 字串连接@H_301_4@ | 'Post' || 'gresql'@H_301_4@ | Postgresql@H_301_4@ | |||
bit_length(string)@H_301_4@ | int@H_301_4@ | 字串里二进制位的个数@H_301_4@ | bit_length('jose')@H_301_4@ | 32@H_301_4@ | |||
char_length(string)@H_301_4@ | 字串中的字符个数@H_301_4@ | char_length('jose')@H_301_4@ | 4@H_301_4@ | ||||
convert(string using conversion_name)@H_301_4@ | 使用指定的转换名字改变编码。@H_301_4@ | convert('Postgresql' using iso_8859_1_to_utf8)@H_301_4@ | 'Postgresql'@H_301_4@ | ||||
lower(string)@H_301_4@ | 把字串转化为小写@H_301_4@ | lower('TOM')@H_301_4@ | tom@H_301_4@ | ||||
octet_length(string)@H_301_4@ | 字串中的字节数@H_301_4@ | octet_length('jose')@H_301_4@ | overlay(string placing string from int [for int])@H_301_4@ | 替换子字串@H_301_4@ | overlay('Txxxxas' placing 'hom' from 2 for 4)@H_301_4@ | Thomas@H_301_4@ | |
position(substring in string)@H_301_4@ | 指定的子字串的位置@H_301_4@ | position('om' in 'Thomas')@H_301_4@ | 3@H_301_4@ | ||||
substring(string [from int] [for int])@H_301_4@ | 抽取子字串@H_301_4@ | substring('Thomas' from 2 for 3)@H_301_4@ | hom@H_301_4@ | ||||
substring(string from pattern)@H_301_4@ | 抽取匹配 POSIX 正则表达式的子字串@H_301_4@ | substring('Thomas' from '...$')@H_301_4@ | mas@H_301_4@ | ||||
substring(string from pattern for escape)@H_301_4@ | 抽取匹配sql正则表达式的子字串@H_301_4@ | substring('Thomas' from '%#"o_a#"_' for '#')@H_301_4@ | oma@H_301_4@ | ||||
trim([leading | trailing | both] [characters] from string)@H_301_4@ | 从字串string的开头/结尾/两边/ 删除只包含characters(缺省是一个空白)的最长的字串@H_301_4@ | trim(both 'x' from 'xTomxx')@H_301_4@ | Tom@H_301_4@ | ||||
upper(string)@H_301_4@ | 把字串转化为大写。@H_301_4@ | upper('tom')@H_301_4@ | TOM@H_301_4@ | ||||
ascii(text)@H_301_4@ | 参数第一个字符的ASCII码@H_301_4@ | ascii('x')@H_301_4@ | 120@H_301_4@ | ||||
btrim(string text [,characters text])@H_301_4@ | 从string开头和结尾删除只包含在characters里(缺省是空白)的字符的最长字串@H_301_4@ | btrim('xyxtrimyyx','xy')@H_301_4@ | trim@H_301_4@ | ||||
chr(int)@H_301_4@ | 给出ASCII码的字符@H_301_4@ | chr(65)@H_301_4@ | A@H_301_4@ | ||||
convert(string text,[src_encoding name,] dest_encoding name)@H_301_4@ | 把字串转换为dest_encoding@H_301_4@ | convert( 'text_in_utf8','UTF8','LATIN1')@H_301_4@ | 以ISO 8859-1编码表示的text_in_utf8@H_301_4@ | ||||
initcap(text)@H_301_4@ | 把每个单词的第一个子母转为大写,其它的保留小写。单词是一系列字母数字组成的字符,用非字母数字分隔。@H_301_4@ | initcap('hi thomas')@H_301_4@ | Hi Thomas@H_301_4@ | ||||
length(string text)@H_301_4@ | string中字符的数目@H_301_4@ | length('jose')@H_301_4@ | lpad(string text,length int [,fill text])@H_301_4@ | 通过填充字符fill(缺省时为空白),把string填充为长度length。 如果string已经比length长则将其截断(在右边)。@H_301_4@ | lpad('hi',5,255)">xyxhi@H_301_4@ | ||
ltrim(string text [,255)">从字串string的开头删除只包含characters(缺省是一个空白)的最长的字串。@H_301_4@ | ltrim('zzzytrim','xyz')@H_301_4@ | md5(string text)@H_301_4@ | 计算给出string的MD5散列,以十六进制返回结果。@H_301_4@ | md5('abc')@H_301_4@ | repeat(string text,number int)@H_301_4@ | 重复string number次。@H_301_4@ | repeat('Pg',255)">PgPgPgPg@H_301_4@ |
replace(string text,from text,to text)@H_301_4@ | 把字串string里出现地所有子字串from替换成子字串to。@H_301_4@ | replace('abcdefabcdef','cd','XX')@H_301_4@ | abXXefabXXef@H_301_4@ | ||||
rpad(string text,255)">通过填充字符fill(缺省时为空白),把string填充为长度length。如果string已经比length长则将其截断。@H_301_4@ | rpad('hi',255)">hixyx@H_301_4@ | ||||||
rtrim(string text [,character text])@H_301_4@ | 从字串string的结尾删除只包含character(缺省是个空白)的最长的字@H_301_4@ | rtrim('trimxxxx','x')@H_301_4@ | split_part(string text,delimiter text,field int)@H_301_4@ | 根据delimiter分隔string返回生成的第field个子字串(1 Base)。@H_301_4@ | split_part('abc~@~def~@~ghi','~@~',255)">def@H_301_4@ | ||
strpos(string,substring)@H_301_4@ | 声明的子字串的位置。@H_301_4@ | strpos('high','ig')@H_301_4@ | 2@H_301_4@ | ||||
substr(string,from [,count])@H_301_4@ | 抽取子字串。@H_301_4@ | substr('alphabet',3,255)">ph@H_301_4@ | |||||
to_ascii(text [,encoding])@H_301_4@ | 把text从其它编码转换为ASCII。@H_301_4@ | to_ascii('Karel')@H_301_4@ | Karel@H_301_4@ | ||||
to_hex(number int/bigint)@H_301_4@ | 把number转换成其对应地十六进制表现形式。@H_301_4@ | to_hex(9223372036854775807)@H_301_4@ | 7fffffffffffffff@H_301_4@ | ||||
translate(string text,255)">把在string中包含的任何匹配from中的字符的字符转化为对应的在to中的字符。@H_301_4@ | translate('12345','14','ax')@H_301_4@ | a23x5@H_301_4@ |
五、位串函数和操作符:@H_301_4@@H_301_4@
对于类型bit和bit varying,除了常用的比较操作符之外,还可以使用以下列表中由Postgresql提供的位串函数和操作符,其中&、|和#的位串操作数必须等长。在移位的时候,保留原始的位串的的长度。
描述@H_301_4@ | 例子@H_301_4@ | 结果@H_301_4@ | |
||@H_301_4@ | 连接@H_301_4@ | B'10001' || B'011'@H_301_4@ | 10001011@H_301_4@ |
B'10001' & B'01101'@H_301_4@ | 00001@H_301_4@ | ||
B'10001' | B'01101'@H_301_4@ | 11101@H_301_4@ | ||
B'10001' # B'01101'@H_301_4@ | 11100@H_301_4@ | ||
~ B'10001'@H_301_4@ | 01110@H_301_4@ | ||
B'10001' << 3@H_301_4@ | 01000@H_301_4@ | ||
B'10001' >> 2@H_301_4@ | 00100@H_301_4@ |
除了以上列表中提及的操作符之外,位串还可以使用字符串函数:length, bit_length, octet_length, position, substring。此外,我们还可以在整数和bit之间来回转换,如:
MyTest=# SELECT 44::bit(10);@H_301_4@
bit
------------
0000101100
(1 row)
MyTest=# SELECT 44::bit(3);@H_301_4@
bit
-----
100
(1 row)
MyTest=# SELECT cast(-44 as bit(12));@H_301_4@
bit
--------------
111111010100
(1 row)
MyTest=# SELECT '1110'::bit(4)::integer;@H_301_4@
int4
------
14
(1 row)
注意:如果只是转换为"bit",意思是转换成bit(1),因此只会转换成整数的最低位。
转载自:http://www.cnblogs.com/stephen-liu74/archive/2011/12/19/2294071.html