首页 > 代码库 > 单行函数

单行函数

内容:

  • 描述SQL中各类型的可用函数
  • 在select语句中使用字符、数字函数

函数是接受输入参数(输入参数是可选的),执行运算并返回单个值的程序。每次执行时,函数只返回一个值。可广义分为两类:单行函数、多行函数。

单行函数:字符、数字、日期、转换函数和通用函数。这些函数每次只作用于数据集的一行。如果查询选择10行,函数就好执行10次

SQL> select region_id, region_name,length(region_name) from regions;

 REGION_ID REGION_NAME               LENGTH(REGION_NAME)
---------- ------------------------- -------------------
         1 Europe                                      6
         2 Americas                                    8
         3 Asia                                        4
         4 Middle East and Africa                     22

-- 返回了四行,函数length()执行了四次

 

大小写转换函数lower()、upper()、initcap():

SQL> select lower(HELLO), upper(world), initcap(hello world) from dual;

LOWER UPPER INITCAP(‘HE
----- ----- -----------
hello WORLD Hello World
-- lower()转为小写, upper()转为大写, initcap()首字母大写:

 

字符操作函数:

-- concat()字符连接函数与连接符(||)的作用一样,length()字符串的长度
SQL> select concat(hello,world), 你好 || 这是连接符, length(12345) from dual; CONCAT(‘HE ‘你好‘||‘这是连接符‘ LENGTH(‘12345‘) ---------- ------------------ --------------- helloworld 你好这是连接符 5

 

 

 trim函数从字符串的开头或结尾去除一些字符:

  • trim(‘ string ‘)删除string两边的空格
  • trim(trailing ‘#‘ from ‘string##‘)从结尾删除string的所有‘#‘
  • trim(leading ‘*‘ from ‘**string‘)从开头删除string的所有‘*‘
  • trim(both ‘#‘ from ‘##string##‘)删除string两边的所有‘#’

填充函数:lpad()、rpad():

 

SQL> select lpad(nihao, 8, *), rpad(nihao, 8,*) from dual;

LPAD(NI RPAD(NI
-------- --------
***nihao nihao***

 

 

 

instr():确定给定字符在字符串的位置,返回数字位置:

SQL> select instr(1#3#, #),
       instr(1#3#5#7,#, 3),
       instr(1#3#5#7#,#,3,2)
   from dual; INSTR(1#3#,#) INSTR(1#3#5#7,#,3) INSTR(1#3#5#7#,#,3,2) ----------------- ---------------------- ------------------------- 2 4 6 -- 从字符串中找出第一次出现‘#’的位置
-- 从字符串第3个字符开始第一次出现‘#’的位置
-- 从字符串第3个字符开始第二次出现‘#’的位置

 

substr():从给定位置开始,提取给定长度的子字符串:

SQL> select substr(1#3#5, 3), 
       substr(1#3#5#7, 2, 3),
       substr(1#3#5#7#, -3, 2)
  from dual; SUB SUB SU --- --- -- 3#5 #3# #7
-- 从第三个字符开始提取字符串,包括第三个字符
-- 从第二个字符开始提出3个字符
-- 从字符串尾倒数第三个字符开始(包括),提出2个字符

 

replace()替换或删除源字符串的某字符:

SQL> select replace(a**de, *, #), replace(a**de, *) from dual;

REPLA REP
----- ---
a##de ade

-- 如果不给出要替换成什么字符的话就是删除掉

 

round()四舍五入、trunc()截取、mod()取余

-- round()四舍五入
SQL> select round(1234.123, 2), round(1234.123, -2), round(1234.123) from dual;

ROUND(1234.123,2) ROUND(1234.123,-2) ROUND(1234.123)
----------------- ------------------ ---------------
          1234.12               1200            1234

-- 正数表示保留几位小数
-- 负数表示判断舍入的外置在小数左边第几位
-- 默认是取整数


-- trunc()直接截断
SQL> select trunc(1234.123, 2), trunc(1234.123, -2), trunc(1234.123) from dual;

TRUNC(1234.123,2) TRUNC(1234.123,-2) TRUNC(1234.123)
----------------- ------------------ ---------------
          1234.12               1200            1234

-- 正数表示保留几位小数
-- 负数表示截小数左边几位
-- 默认是截取为整数

-- mod()取余 SQL> select mod(5,3), mod(5.2, 3) from dual; MOD(5,3) MOD(5.2,3) ---------- ---------- 2 2.2 -- 偶数除以2没有余数,奇数除以2余1.可以用来判断奇偶

 

单行函数