ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 使用简单函数

使用简单函数

原创 Linux操作系统 作者:xw_z 时间:2009-05-30 09:56:33 0 删除 编辑
1.  两种主要类型的函数:
单行函数:同时只能对一行进行操作,且对输入的每一行返回一行输出结果。
聚合函数:同时可以对多行进行操作,并返回一行输出结果。
 
2. 单行函数
1) 字符函数;
        1.  ASCII(x):返回字符x的ASCII码。
             CHR(x):返回ASCII码为x的字符。
         2. CONCAT(x,y):将y添加到x之后,并返回得到的字符串。(与||操作符的功能完全相同)
         3. INITCAP(x):将x中每个单词的首字母转换成大写。
         4. INSTR(x,find_string [,start] [,occurrence]):在x中查找find_string,并返回find_string所在的位置。可选参数start表明从哪个位置开始查找,occurrence说明应返回find_string第几次出现的位置。
         5. LENGTH(x):获得x中字符的个数。
         6. LOWER(x)和UPPER(x)
         7. LPAD(x,width [,pad_string])和RPAD(x,width [,pad_string]):在x的左边/右边补齐空格,使x的总长度达到width。可选参数pad_string指定填充字符串。
         8. LTRIM(x [,trim_string])、RTRIM(x [,trim_string])和TRIM([trim_string FROM] x):从左边/右边/两边截去字符,可选参数trim_string指定要截去的字符,默认截去空格。
         9. NVL(x,value)、NVL2(x,value1,value2)
       10. REPLACE(x,search_string,replace_string)
       11. SOUNDEX(x):获得包含x发音的一个字符串,该函数用于对英文拼写不同但发音相似的单词进行比较。
        12. SUBSTR(x,start [,length])
2) 数字函数
          1. ABS(x)、MOD(x,y)、POWER(x,y)、SQRT(x)、ACOS((x)、ASIN(x)、ATAN(x)、ATAN2(x,y)、BITAND(x,y)、COS(x)、COSH(x)、EXP(x)、LOG(x,y)、LN(x)、SIN(x)、TAN(x)、TANH(x)
              CEIL(x):获得大于或等于x的最小整数。
              FLOOR(x):获得小于或等于x的最大整数。  
              ROUND(x [,y])计算对x取整的结果,可选参数y说明对第几位小数取整,默认为0
              TRUNC(x [,y])计算对x截断的结果,可选参数y说明对第几位小数截断,默认为0
              SIGN(x):获得x的符号。
3) 转换函数
       1. TO_CHAR(x [,format]):将x(数字或日期)转换为一个字符串,可选参数format指定格式。
           SELECT TO_CHAR(12345.67,'99,999.99) FROM DUAL;    --12,345.67
           注:如果要处理的数包含的数字个数多于格式中指定的数字个数,那么进行格式转换时,将会返回一个由井号(#)组成的字符串。
       2. TO_NUMBER(x [,format]): 将x转换为一个数字,format说明了x的格式
            SELECT TO_NUMBER('-$12,345.67','$99,999.99') FROM DUAL;    --12345.67       
       3. CAST(x AS type):将x转换为由type指定的兼容数据库类型。  
4) 正则表达式函数
 
3.   聚合函数
1) AVG(x)、MAX(x)、MIN(x)、SUM(x)
2) COUNT(x):使用该函数时要避免使用星号(*),因为这样返回结果所需的时间可能会更长。相反,应该使用表中某一列或者使用ROWID伪列。
         SELECT COUNT(ROWID) FROM products;
3) STDDEV(x):标准差(方差的平方根)
         VARIANCE(x):方差
 
4. 对行进行分组
1) 使用GROUP BY子句对行进行分组
        例:SELECT product_type_id,COUNT(ROWID) FROM products
                GROUP BY product_type_id
                ORDER BY product_type_id;
        注:1. 不必将GROUP BY中用到的列包含在SELECT之后的列表中。(如上例SELECT 后的product_type_id可以去掉)。
                 2. 如果查询中包含聚合函数,而所选择的列并不在聚合函数中,那么这些列必须在GROUP BY子句中。
          例:SELECT product_type_id,AVG(price) FROM products;
          错误:product_type_id不在AVG函数中,也没在GROUP BY子句中,应改为:
                  SELECT product_type_id,AVG(price) FROM products
                  GROUP BY product_type_id;
                3. 不能在WHERE子句中使用聚合函数来限制行,因为WHERE子句只能对单行而不是行组进行过滤,要过滤行组,可以使用HAVING子句。
           例: SELECT product_type_id,AVG(price) FROM products
                     WHERE AVG(price) > 20
                     GROUP BY product_type_id;
           错误,应改为:
                      SELECT product_type_id,AVG(price) FROM products             
                     GROUP BY product_type_id
                      HAVING AVG(price) > 20;
2) 使用HAVING子句过滤行组
         注:HAVING子句放在GROUP BY子句之后,GROUP BY子句可以不与HAVING子句一起使用,但HAVING必须与GROUP BY子句一起使用。
3) 组合使用WHERE和GROUP BY子句
        作用:WHERE首先对返回的行进行过滤,然后GROUP BY对保留的行组进行分组。
        例: SELECT product_type_id,AVG(price) FROM products
                  WHERE price > 15
                  GROUP BY product_type_id
                  ORDER BY product_type_id;
4) 组合使用WHERE、GROUP BY和HAVING子句
        作用:WHERE首先对返回的行进行过滤,然后GROUP BY对保留的行组进行分组,最后HAVING对行组进行过滤。
        例: SELECT product_type_id,AVG(price) FROM products
                  WHERE price > 15
                  GROUP BY product_type_id
                  HAVING AVG(price) > 13
                  ORDER BY product_type_id;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/17014649/viewspace-604471/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-05-22

  • 博文量
    28
  • 访问量
    38411