PostgreSQL学习手册(函数和操作符<一>)

来源:互联网 发布:面向对象编程的理解 编辑:程序博客网 时间:2024/06/04 00:45

一、逻辑操作符:

    常用的逻辑操作符有:ANDORNOT。其语义与其它编程语言中的逻辑操作符完全相同。

二、比较操作符:

    下面是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中提供的数学操作符列表:

操作符描述例子结果+2 + 35-2 - 3-1*2 * 36/4 / 22%5 % 41^2.0 ^ 3.08|/平方根|/ 25.05||/立方根||/ 27.03!阶乘5 !120!!阶乘!! 5120@绝对值@ -5.05&按位AND91 & 1511|按位OR32 | 335#按位XOR17 # 520~按位NOT~1-2<<按位左移1 << 416>>按位右移8 >> 22

    按位操作符只能用于整数类型,而其它的操作符可以用于全部数值数据类型。按位操作符还可以用于位串类型bit和bit varying,

    下面是PostgreSQL中提供的数学函数列表,需要说明的是,这些函数中有许多都存在多种形式,区别只是参数类型不同。除非特别指明,任何特定形式的函数都返回和它的参数相同的数据类型。

函数返回类型
描述例子 
结果abs(x) 绝对值abs(-17.4)17.4cbrt(double) 立方根cbrt(27.0)3ceil(double/numeric) 不小于参数的最小的整数ceil(-42.8)-42degrees(double) 
 把弧度转为角度degrees(0.5)28.6478897565412exp(double/numeric) 自然指数exp(1.0)2.71828182845905floor(double/numeric) 不大于参数的最大整数floor(-42.8)-43ln(double/numeric) 自然对数ln(2.0)0.693147180559945log(double/numeric) 10为底的对数log(100.0)2log(b numeric,x numeric) numeric指定底数的对数log(2.0, 64.0)6.0000000000mod(y, x) 取余数mod(9,4)1pi() 
double"π"常量pi() 
3.14159265358979power(a double, b double)double求a的b次幂power(9.0, 3.0)729power(a numeric, b numeric)numeric求a的b次幂power(9.0, 3.0)729radians(double)double把角度转为弧度radians(45.0)0.785398163397448random()double0.0到1.0之间的随机数值random() round(double/numeric) 圆整为最接近的整数round(42.4)42round(v numeric, s int)numeric圆整为s位小数数字round(42.438,2)42.44sign(double/numeric) 参数的符号(-1,0,+1) 
sign(-8.4)-1sqrt(double/numeric) 平方根sqrt(2.0)1.4142135623731trunc(double/numeric) 截断(向零靠近)trunc(42.8)42trunc(v numeric, s int)numeric截断为s小数位置的数字trunc(42.438,2)42.43

    三角函数列表:

函数描述acos(x)反余弦asin(x)反正弦atan(x)反正切atan2(x, y)正切 y/x 的反函数cos(x)余弦cot(x)余切sin(x)正弦tan(x)正切


四、字符串函数和操作符:

    下面是PostgreSQL中提供的字符串操作符列表:

函数返回类型描述例子结果string || stringtext字串连接'Post' || 'greSQL'PostgreSQLbit_length(string)int字串里二进制位的个数bit_length('jose')32char_length(string)int字串中的字符个数char_length('jose')4convert(string using conversion_name)text使用指定的转换名字改变编码。convert('PostgreSQL' using iso_8859_1_to_utf8)'PostgreSQL'lower(string)text把字串转化为小写lower('TOM')tomoctet_length(string)int字串中的字节数octet_length('jose')4overlay(string placing string from int [for int])text替换子字串overlay('Txxxxas' placing 'hom' from 2 for 4)Thomasposition(substring in string)int指定的子字串的位置position('om' in 'Thomas')3substring(string [from int] [for int])text抽取子字串substring('Thomas' from 2 for 3)homsubstring(string from pattern)text抽取匹配 POSIX 正则表达式的子字串substring('Thomas' from '...$')massubstring(string from pattern for escape)text抽取匹配SQL正则表达式的子字串substring('Thomas' from '%#"o_a#"_' for '#')omatrim([leading | trailing | both] [characters] from string)text从字串string的开头/结尾/两边/ 删除只包含characters(缺省是一个空白)的最长的字串trim(both 'x' from 'xTomxx')Tomupper(string)text把字串转化为大写。upper('tom')TOMascii(text)int参数第一个字符的ASCII码ascii('x')120btrim(string text [, characters text])text从string开头和结尾删除只包含在characters里(缺省是空白)的字符的最长字串btrim('xyxtrimyyx','xy')trimchr(int)text给出ASCII码的字符chr(65)Aconvert(string text, [src_encoding name,] dest_encoding name)text把字串转换为dest_encodingconvert( 'text_in_utf8', 'UTF8', 'LATIN1')以ISO 8859-1编码表示的text_in_utf8initcap(text)text把每个单词的第一个子母转为大写,其它的保留小写。单词是一系列字母数字组成的字符,用非字母数字分隔。initcap('hi thomas')Hi Thomaslength(string text)intstring中字符的数目length('jose')4lpad(string text, length int [, fill text])text通过填充字符fill(缺省时为空白),把string填充为长度length。 如果string已经比length长则将其截断(在右边)。lpad('hi', 5, 'xy')xyxhiltrim(string text [, characters text])text从字串string的开头删除只包含characters(缺省是一个空白)的最长的字串。ltrim('zzzytrim','xyz')trimmd5(string text)text计算给出string的MD5散列,以十六进制返回结果。md5('abc') repeat(string text, number int)text重复string number次。repeat('Pg', 4)PgPgPgPgreplace(string text, from text, to text)text把字串string里出现地所有子字串from替换成子字串to。replace('abcdefabcdef', 'cd', 'XX')abXXefabXXefrpad(string text, length int [, fill text])text通过填充字符fill(缺省时为空白),把string填充为长度length。如果string已经比length长则将其截断。rpad('hi', 5, 'xy')hixyxrtrim(string text [, character text])text从字串string的结尾删除只包含character(缺省是个空白)的最长的字rtrim('trimxxxx','x')trimsplit_part(string text, delimiter text, field int)text根据delimiter分隔string返回生成的第field个子字串(1 Base)。split_part('abc~@~def~@~ghi', '~@~', 2)defstrpos(string, substring)text声明的子字串的位置。strpos('high','ig')2substr(string, from [, count])text抽取子字串。substr('alphabet', 3, 2)phto_ascii(text [, encoding])text把text从其它编码转换为ASCII。to_ascii('Karel')Karelto_hex(number int/bigint)text把number转换成其对应地十六进制表现形式。to_hex(9223372036854775807)7ffffffffffffffftranslate(string text, from text, to text)text把在string中包含的任何匹配from中的字符的字符转化为对应的在to中的字符。translate('12345', '14', 'ax')a23x5


五、位串函数和操作符:

    对于类型bit和bit varying,除了常用的比较操作符之外,还可以使用以下列表中由PostgreSQL提供的位串函数和操作符,其中&、|和#的位串操作数必须等长。在移位的时候,保留原始的位串的的长度。

操作符描述例子结果||连接B'10001' || B'011'10001011&按位ANDB'10001' & B'01101'00001|按位ORB'10001' | B'01101'11101#按位XORB'10001' # B'01101'11100~按位NOT~ B'10001'01110<<按位左移B'10001' << 301000>>按位右移B'10001' >> 200100

    除了以上列表中提及的操作符之外,位串还可以使用字符串函数: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),因此只会转换成整数的最低位。

转载: http://www.cnblogs.com/stephen-liu74/archive/2012/05/02/2294071.html

0 0
原创粉丝点击