OraleDB使用单行函数定制输出Word文件下载.docx
《OraleDB使用单行函数定制输出Word文件下载.docx》由会员分享,可在线阅读,更多相关《OraleDB使用单行函数定制输出Word文件下载.docx(15页珍藏版)》请在冰豆网上搜索。
•转换
•常规
多行函数
这些函数可以处理成组的行,为每组行返回一个结果。
∙单行函数
单行函数:
•处理数据项
•接受参数并返回一个值
•对每个返回行进行处理
•为每行返回一个结果
•可能会修改数据类型
•可以嵌套
•接受参数,这些参数可以是列或表达式
function_name[(arg1,arg2,...)]
在该语法中:
function_name:
是函数的名称
arg1,arg2:
是函数使用的任意参数,可以是列名称或表达式。
单行函数用于处理数据项。
其接受一个或多个参数,并对查询返回的每一行返回一个值。
参数可以是下列对象之一:
•用户提供的常量
•变量值
•列名
•表达式
单行函数的特点包括:
•对查询中返回的每一行进行处理
•可能会返回一个与所引用类型不同的数据值
•可能需要一个或多个参数
•可用于SELECT、WHERE和ORDERBY子句中;
也可以嵌套。
将介绍以下单行函数:
•字符函数:
接受字符输入,可以返回字符值和数字值
•数字函数:
接受数字输入,可以返回数字值
•日期函数:
对DATE数据类型的值进行处理(所有日期函数都会返回一个DATE数据类型的值,只有MONTHS_BETWEEN函数返回一个数字。
)
•转换函数:
将值从一种数据类型转换为另一种数据类型
•常规函数:
-NVL
-NVL2
-NULLIF
-COALESCE
-CASE
-DECODE
∙字符函数
单行字符函数接受的输入是字符数据,可以返回字符值和数字值。
字符函数可以分为以下几类:
•大小写转换函数
•字符处理函数
注:
以下是一些完全或部分符合SQL:
2003的函数:
UPPER
LOWER
TRIM
LENGTH
SUBSTR
INSTR
∙
大小写转换函数
以下函数用于转换字符串的大小写:
LOWER、UPPER和INITCAP是三个大小写转换函数。
•LOWER:
将大小写混合或大写的字符串转换为小写
•UPPER:
将大小写混合或小写的字符串转换为大写
•INITCAP:
将每个单词的首字母转换为大写,其余字母保留为小写
hr@TEST0924>
SELECT'
Thejobidfor'
||UPPER(last_name)||'
is'
||LOWER(job_id)AS"
EMPLOYEEDETAILS"
FROM
employees;
EMPLOYEEDETAILS
------------------------------------------------------
ThejobidforABELissa_rep
ThejobidforANDEissa_rep
ThejobidforATKINSONisst_clerk
∙使用大小写转换函数
使用以下语句可显示雇员Higgins的雇员编号、姓名和部门编号:
SELECTemployee_id,last_name,department_idFROM
employeesWHERE
last_name='
higgins'
;
norowsselected
第一个SQL语句的WHERE子句将雇员姓名指定为higgins。
因为EMPLOYEES表中的所有数据都是以正常大小写形式存储的,所以姓名higgins在表中没有找到匹配项,因此不会选择任何行。
LOWER(last_name)='
EMPLOYEE_IDLAST_NAME
DEPARTMENT_ID
-------------------------------------------------
205Higgins
110
第二个SQL语句中的WHERE子句指定将EMPLOYEES表中的雇员姓名与higgins进行比较,但是先将LAST_NAME列转换为小写,然后再进行比较。
因为两个姓名都是小写的,因此找到了匹配项,从而选择了一行。
可以按以下方式重写WHERE子句,产生的结果相同:
...WHERElast_name='
Higgins'
输出中姓名的显示格式与其存储在数据库中的一样。
要以大写形式显示姓名,可以在SELECT语句中使用UPPER函数。
SELECTemployee_id,
UPPER(last_name),
department_idFROM
employeesWHERE
INITCAP(last_name)='
EMPLOYEE_IDUPPER(LAST_NAME)
DEPARTMENT_ID
205HIGGINS
∙字符处理函数
下面的函数用于处理字符串:
CONCAT、SUBSTR、LENGTH、INSTR、LPAD、RPAD和TRIM是要介绍的字符处理函数。
•CONCAT:
将值联接在一起(CONCAT函数中只能使用两个参数)
•SUBSTR:
提取确定长度的字符串
•LENGTH:
以数字值的形式显示字符串的长度
•INSTR:
查找指定字符串的数字位置
•LPAD:
返回一个表达式,左边使用一个字符表达式填充到n个字符的长度
•RPAD:
返回一个表达式,右边使用一个字符表达式填充到n个字符的长度
•TRIM:
截去字符串首字符或尾字符(或者两者都截去)(如果trim_character或trim_source是一个字符文字,则必须将其放在单引号内)
可以将UPPER和LOWER等函数与&
替代变量组合使用。
例如,如果使用UPPER('
&
job_title'
),用户就不必以特定的大小写形式输入职务了。
instr(string1,string2,start_position,nth_appearance)
string1
源字符串,要在此字符串中查找。
string2
要在string1中查找的字符串。
start_position
代表string1的哪个位置开始查找。
此参数可选,如果省略默认为1.字符串索引从1开始。
如果此参数为正,从左到右开始检索,如果此参数为负,从右到左检索,返回要查找的字符串在源字符串中的开始索引。
nth_appearance
代表要查找第几次出现的string2.此参数可选,如果省略,默认为1.如果为负数系统会报错。
∙使用字符处理函数
l
1
SELECTemployee_id,CONCAT(first_name,last_name)NAME,job_id,LENGTH(last_name),INSTR(last_name,'
a'
)"
Contains'
?
"
2*FROM
SUBSTR(job_id,4)='
REP'
/
EMPLOYEE_IDNAME
JOB_ID
LENGTH(LAST_NAME)Contains'
------------------------------------------------------------------------------------------------
202PatFay
MK_REP
3
2
203SusanMavris
HR_REP
6
204HermannBaer
PR_REP
4
示例中显示从其职务ID的第四个位置开始包含字符串REP的所有雇员的以下信息:
联接在一起的名字和姓氏、雇员姓氏的长度,以及字母a
在雇员姓氏中的数字位置。
示例:
修改幻灯片中的SQL语句,以显示姓氏以字母“n”为结尾的雇员的数据。
SELECTemployee_id,CONCAT(first_name,last_name)NAME,LENGTH(last_name),INSTR(last_name,'
2
FROM
SUBSTR(last_name,-1,1)='
n'
LENGTH(LAST_NAME)Contains'
--------------------------------------------------------------------------------------
102LexDeHaan
7
5
105DavidAustin
0
∙数字函数
•ROUND:
将值舍入到指定的小数位
•TRUNC:
将值截断到指定的小数位
•MOD:
返