test_lesson03单行函数
【IT专家】MySQL高级查询函数(单行函数)

本文由我司收集整编,推荐下载,如有疑问,请与我司联系MySQL高级查询函数(单行函数)2017/03/20 737 函数的分类:1,单行函数:对每一条记录输入值进行计算,得到相应的计算结果,返回给用户,也就是说,每条记录作为一个输入参数,经过函数计算得到每条记录的计算结果。
2,多行函数:对多条记录输入值进行计算,得到多条记录对应的单个结果。
单行函数: ①:字符串函数(用户处理单行的字符数据,比如大小写转换,字符串截取,拼装等) a.LOWER/UPPER(LOWER(str):返回字符串str变为小写字母的字符串.UPPER(str):返回字符串str变为大写字母的字符串) SELECT UPPER(name) FROM student; //全部大写SELECT LOWER(name) FROM student; //全部小写b.CONCAT: CONCAT(str1,str2,...): 1,返回结果为连接参数产生的字符串。
2,如有任何一个参数为NULL ,则返回值为NULL 3,允许有一个或多个参数 SELECT name,age, CONCAT(name,’-’,age) FROM student;运行的结果为: c.INSERT:把指定(位置,长度)的子字符串替换成目标字符串 格式:INSERT(str,pos,len,newstr) 参数:str:(源字符串) pos:(开始插入的位置,索引从1开始) len:(替换字符串的长度) newstr:(待插入的字符串) 1,返回字符串str, 其子字符串起始于pos 位置和长度被字符串newstr取代的len 字符。
2,如果pos 超过字符串长度,则返回值为原始字符串。
3,假如len的长度大于其它字符串的长度,则从位置pos开始替换。
4,若任何一个参数为null,则返回值为NULL示例:替换用户名名的部分字符,规则如下:保留用户名前2位,中间3位使用*代替,如果姓名还有多余的字符,保留 SELECT INSERT(name,2,3,’***’) FROM student;运行的结果为: d.①LENGTH:字符串所占用的字节数。
06.单行函数

0:舍入到没有小数位 -1:表示应该舍入到小数 点左侧的位数
26
数字函数 TRUNC函数 2-1
TRUNC(n,p)截断数字 n:要截断的数字或字段 p:表示应该对数据进行删除或截断的数字位置 p是正数,表示小数点右侧位置 负数, 表示小数点左侧位置
SELECT title,retail, TRUNC(retail,1) FROM books;
12
字符处理函数 SUBSTR函数 2-1
返回字符串的一部分,子串
示例:查看邮政编码的前三位数字
SELECT DISTINCT SUBSTR(zip,1,3) FROM customers;
SUBSTR(c,p,l) c:要提取的字符串 p:要提取的起始字符位置 l:查询中要返回的字符串长度
13
31
DATE函数 ADD_MONTHS函数 2-2
32
DATE函数 NEXT_DAY函数
可以确定在指定日期之后一周的下一个特定日期
NEXT_DAY(d,DAY) d:开始日期 DAY:将要确定的一周中的某一天
SELECT order#,orderdate, NEXT_DAY(orderdate, '星期一') FROM orders WHERE order#=1018;
多行函数,对所处理的一组行或一类行只返回一个结 果
4
单行函数
函数类型 大小写转换函数 字符处理函数 数字函数 日期函数
其他
函数 LOWER,UPPER,INITCAP SUBSTR , LENGTH , LPAD/RPAD , LTRIM/RTRIM,REPLACE,CONCAT ROUND,TRUNC MONTHS_BETWEEN , ADD_MONTHS , NEXT_DAY,TO_DATE NVL,NVL2,TO_CHAR等
Les03-处理单行的函数省名师优质课赛课获奖课件市赛课一等奖课件

目的
完毕本节课后,应该到达如下旳目旳:
– 描述在 SQL语句中可能用到旳多种函数。 – 在SELECT 语句中使用字符串、数字、日
期旳函数。 – 描述转换函数旳使用方法
SQL函数
输入
参数 1 参数2
函数 函数处理动作
参数n
输出 成果值
两种类型旳 SQL函数
函数
单行函数
多行函数
转换函数
数据类型转换
隐式数据类型转换 显式数据类型转换
隐式数据类型转换
Oracle服务器能够自动进行下列类型旳转 换:
From
To
VARCHAR2 or CHAR NUMBER
VARCHAR2 or CHAR DATE
NUMBER
VARCHAR2
DATE
VARCHAR2
隐式数据类型转换
对于体现式旳计算, Oracle服务器能够自动 进行下列转换:
成果 GoodString Str 6 3 ******5000 MITH
使用字符操作函数
SQL> SELECT ename, CONCAT (ename, job), LENGTH(ename),
2
INSTR(ename, 'A')
3 FROM emp
4 WHERE SUBSTR(job,1,5) = 'SALES';
在 TO_CHAR函数中使用这些格式,以 按照某种字符格式展示一种数字值
Hale Waihona Puke 9 代表一种数字值0 强制显示一种0
$ 在一种浮点值前面显示一种$符号
L 使用浮点类型旳本地货币符号
.
显示一种小数点
MySQL高级查询函数(单行函数)

MySQL⾼级查询函数(单⾏函数)函数的分类:1,单⾏函数:对每⼀条记录输⼊值进⾏计算,得到相应的计算结果,返回给⽤户,也就是说,每条记录作为⼀个输⼊参数,经过函数计算得到每条记录的计算结果。
2,多⾏函数:对多条记录输⼊值进⾏计算,得到多条记录对应的单个结果。
单⾏函数:①:字符串函数(⽤户处理单⾏的字符数据,⽐如⼤⼩写转换,字符串截取,拼装等)a.LOWER/UPPER(LOWER(str):返回字符串str变为⼩写字母的字符串.UPPER(str):返回字符串str变为⼤写字母的字符串) SELECT UPPER(name) FROM student; //全部⼤写SELECT LOWER(name) FROM student; //全部⼩写b.CONCAT: CONCAT(str1,str2,...): 1,返回结果为连接参数产⽣的字符串。
2,如有任何⼀个参数为NULL ,则返回值为 NULL 3,允许有⼀个或多个参数SELECT name,age, CONCAT(name,'-',age) FROM student;运⾏的结果为:c.INSERT:把指定(位置,长度)的⼦字符串替换成⽬标字符串 格式:INSERT(str,pos,len,newstr) 参数:str:(源字符串) pos:(开始插⼊的位置,索引从1开始) len:(替换字符串的长度) newstr:(待插⼊的字符串) 1,返回字符串str, 其⼦字符串起始于pos 位置和长度被字符串 newstr取代的len 字符。
2,如果pos 超过字符串长度,则返回值为原始字符串。
3,假如len的长度⼤于其它字符串的长度,则从位置pos开始替换。
4,若任何⼀个参数为null,则返回值为NULL⽰例:替换⽤户名名的部分字符,规则如下:保留⽤户名前2位,中间3位使⽤*代替,如果姓名还有多余的字符,保留SELECT INSERT(name,2,3,'***') FROM student;运⾏的结果为:d.①LENGTH:字符串所占⽤的字节数SELECT LENGTH(name) FROM student;②CHAR_LENGTH:计算字符数SELECT CHAR_LENGTH(name) FROM student;e:LPAD/RPAD:字符串的字符数如果⼤于给定的个数,如果少了就从函数指定的边补齐指定个数,如果多了从字符串的最后截掉 LPAD(str,len,padstr):左填补 1,返回字符串str, 其左边由字符串padstr 填补到总长度为len。
Chapter3 单行函数

OCP-007-Chapter3 单行函数目的完成这一章,可以作下列事情:描述SQL中可用的不同函数类型在select语句中使用字符、数字和日期函数描述转换函数的应用函数是SQL非常有用的特性,可以实现下列功能:执行数据的计算编辑单独的数据项操作多行的输出(Manipulate output for groups of rows)格式化日期和数字的显示转换数据类型SQL函数有时候需要参数,但是总会返回一个值;过程主要是完成一个事件单行函数:操作数据项;接受参数并返回一个值;作用于每一个返回的行;每行返回一个结果;可能会改变数据类型;可以嵌套;可以使用用户定义的常量、变量值、列名或者表达式作为参数单行函数分为字符函数、数字函数、日期函数、转换函数和一般函数,可以在select, wher e, order by子句中使用一般函数:NVL,NVL2,NULLIF,COALSECE,CASE,DECODE字符函数接受字符数据,返回字符或者数字。
字符函数分为大小写转换函数(Lower, Upp er, Initcap首字目大写)和字符串操作函数(concat, substr, length, instr, lpad/rpad, trim, replace)。
SUBSTR(column|expression,m[,n])->返回从m开始的n个字符;若m为负值,则从末尾开始数mINSTR(column|expression,'string', [,m], [n] )->从m位置开始寻找第n个string字符(串)(缺省m,n为1)LPAD/RPAD(column|expression, n,'string')->扩展到n个字符宽,不足部分使用string字符添加TRIM(leading|trailing|both, trim_character FROM trim_source)->删除前导字符串,如果后面的trim_character和trim_source都是literal字符串,一定要使用单引号包围起来REPLACE(text,search_string,replacement_string)->替换CONCAT('Hello', 'World') -> HelloWorldSUBSTR('HelloWorld',1,5) -> HelloLENGTH('HelloWorld') -> 10INSTR('HelloWorld', 'W') ->6LPAD(salary,10,'*') -> *****24000RPAD(salary, 10, '*') -> 24000*****TRIM('H' FROM 'HelloWorld') -> elloWorld数字函数:Round圆整,Trunc截断,Mod取模->其中Round, Trunc也可以用于日期函数ROUND(column|expression, n)->四舍五入到n为小数,如果n为负值,则从小数点向左边数round(345.23,-3)=0; round(345.23,-2)=300; round(345.23,-1)=350; round(345.23)=345 TRUNC(column|expression,n)->截断到n为小数,如果n为负值,则从小数点向左边数trunc(345.23,-3)=0; trunc(345.23,-2)=300; trunc(345.23,-1)=340; trunc(345.23)=345测试函数或者计算结果时可以使用dual这个虚假的表SELECT ROUND(45.923,2), ROUND(45.923,0),ROUND(45.923,-1)FROM DUAL;Oracle数据库内部以下列方式存储日期:世纪,年,月,日,小时,分,秒,缺省的日期格式为DD-MON-RR当插入日期函数时,世纪值自动从sysdate函数(返回当前数据库服务器的日期和时间)取得允许的日期和数字的操作:date + number, date - number, date - date, date + number/24日期函数:MONTHS_BETWEEN(date1, date2)->两个日期间的月份,注意月份为中文的情况ADD_MONTHS(date, n)->添加月份NEXT_DAY(date, 'char')->找到下一个星期几(可以为数字或者字符串)LAST_DAY(date)->发现包含date所在月份的最后一天ROUND(date[,'fmt'])->圆整到格式中所指定的单位,省略的话圆整到最近的天TRUNC(date[, 'fmt'])->截断到格式中所指定的单位,省略的话截断到最近的天假定SYSDATE = '25-JUL-95':• ROUND(SYSDATE,'MONTH') -> 01-AUG-95• ROUND(SYSDATE ,'YEAR') -> 01-JAN-96• TRUNC(SYSDATE ,'MONTH') -> 01-JUL-95• TRUNC(SYSDATE ,'YEAR') -> 01-JAN-95转换函数隐式转换和显式转换(data type to data type)尽管隐式转换可以使用,推荐使用显式转换以使得SQL语句更可靠隐式转换:VARCHAR OR VARCHAR2 -> NUMBER; VARCHAR OR VARCHAR2 -> DATENUMBER -> VARCHAR2; DATE -> VARCHAR2显式转换:TO_CHAR(number|date,[ fmt],[nlsparams])TO_NUMBER(char,[fmt],[nlsparams])TO_DATE(char,[fmt],[nlsparams])The nlsparams parameter specifies the following characters, which are returned by number format elements:·Decimal character·Group separator·Local currency symbol·International currency symbolTO_CHAR(date, 'format_model')->格式模式是大小写敏感的,必须使用单引号包围,一定要使用逗号把格式和日期值间隔开来,使用fm可以把前面的空格或者零压缩掉日期格式模式:CC (世纪),YYYY,YYY,YY,Y(四个数字表示的年份;分别表示使用4位、后3位、后两位和后一位来表示年份),YEAR(拼写的年份),Q(季节),MM(两个数字表示的月份),MONTH(月份全名,九个字符长),MON(月份的三字缩写),RM(罗马数字表示的月份),WW(一年的第几个星期),W(月份的第几个星期),DY(星期的三字缩写),DAY(星期全称,九个字符长),DDD(一年的第几天),DD(一个月的第几天),D(一星期的第几天)BC,B.C.,AM,A.M.,HH,HH12,HH24,MI,SS,SSSSS(午夜过后的秒数)HH24:MI:SS AM -> 15:45:32 PM; DD "of" MONTH -> 12 of OCTOBER;/.,"of the" -->标点和引用的字符会在日期中原样输出DDspth -> fourteenth;DDth -> 4th;DDsp -> fourSELECT last_name,TO_CHAR(hire_date, 'fmDD Month YYYY') HIREDATEFROM employees;TO_CHAR(number, 'format_model')9:代表数字0:强制显式0 $:显示$符号L:显示本地货币符号 .:打印小数点,:显示千位的分隔符当值大于给定格式的位数时,Orale数据库会把整个数字显式为#TO_DATE(char[, 'format_model']) ->有个fx限制符,使用后必须精确的匹配,包括前后的空格个数RR日期格式:________|_____给定年份_________________当前年份|____0~49___|____50~99_______0~49___|___Current__|____Before_______50~99__|____Next____|____Current______单行函数可以嵌套任意层,从最内层开始计算SELECT TO_CHAR(NEXT_DAY(ADD_MONTHS(hire_date, 6), 'FRIDAY'),'fmDay, Month DDth, YYYY')"Next 6 Month Review"FROM employeesORDER BY hire_date;一般函数可以使用任何数据类型,并且可以使用NULLNVL (expr1, expr2)->expr1为NULL,返回expr2;不为NULL,原样返回。
单行函数3解读

3
… 1 2 3
使用 COALESCE 函数
• COALESCE 与 NVL 相比的优点在于 COALESCE 可以同时处理交替的多个值。 • 如果第一个表达式为空,则返回下一个表达式, 对其他的参数进行COALESCE 。
使用 COALESCE 函数
SELECT last_name, COALESCE(commission_pct, salary, 10) comm FROM employees ORDER BY commission_pct;
使用NVL函数
1 SELECT last_name, salary, NVL(commission_pct, 0), (salary*12) + (salary*12*NVL(commission_pct, 0)) AN_SAL FROM employees; 2
…
1 2
exp1 != null ? exp2 : exp3
• 使用 TO_NUMBER :
TO_NUMBER(‘¥1,234,567,890.00’,’L999,999,999,999.99’) from dual
通用函数
这些函数适用于任何数据类型,同时也适用于 空值: • NVL (expr1, expr2) • NVL2 (expr1, expr2, expr3) • NULLIF (expr1, expr2) • COALESCE (expr1, expr2, ..., exprn)
…
条件表达式
• 在 SQL 语句中使用IF-THEN-ELSE 逻辑 • 使用两种方法:
– CASE 表达式 – DECODE 函数
CASE 表达式
在需要使用 IF-THEN-ELSE 逻辑时:
学习python第三天单行函数

学习python第三天单⾏函数1.去重:distinct关键字需求:查看公司⼀共有多少部门?select department_id from employees; //此代码会查出107条记录,存在部门重复的问题!select distinct department_id from employees;思考:参看如下代码有没有问题?select employee_id,last_name,distinct department_id from employees;解答:会出现问题(报错了),出错原因,因为在执⾏代码的过程中对于employee_id,last_name这两列都有107条数据,⽽department_id去重之后只有12条数据,数量对不上了!所以报错了!总结:使⽤distinct需谨慎...2.单⾏函数:概念:单数据进单结果出(单进单出)分类学习:1).字符函数2).数字函数3).⽇期函数4).转换函数5).通⽤函数字符函数:1).⼤⼩写转换函数:3个①.lower(m):将字符串中所有字符转换为全⼩写②.upper(m):将字符串中所有字符转换为全⼤写③.initcap(m):将字符串中⾸字母转为⼤写,其余字母转换⼩写代码实现:select lower('ORACLE'),upper('oracle'),initcap('oRACLE') from dual;需求:查询名字为Bell这个⼈的信息?select*from employees where lower(last_name) ='bell';select*from employees where upper(last_name) ='BELL';select*from employees where initcap(last_name) ='Bell';2).字符控制函数:8个①.concat(m,n):将字符串m和字符串n拼接得到⼀个更长的新字符串代码实现:select concat('Hello','World') from dual;select concat(last_name,first_name) from employees;②.length(m):得到某个数据的长度代码实现:select length('python'),length(123456) from dual;select length(employee_id),length(first_name),length(hire_date) from employees;③.substr(x,y,z):将x从y位置开始截取z个长度得到⼀个新的字符串返回给程序参数解释:x:原本的字符串数据y:起点位置(下标,索引)z:截取的长度代码实现:select substr('HelloWorld',1,5) from dual;④.instr(m,n):参数解释:判断某个字符在字符串中⾸次出现的位置m:字符串n:⼀个字符代码实现:select instr('HelloWorld','l') from dual;⑤.replace(x,y,z):将x中的字符y,全部替换为字符z参数解释:x:字符串y:字符串中某个字符z:需要被替换成的字符代码实现:select replace('aaabcdaacdaabefaanba','a','6') from dual;⑥.trim(x from y):去除y字符串中⾸尾的字符x参数解释:x:字符y:字符串代码实现:select trim('m'from'mmmmHellmmmomWmmorldmmmmm') from dual;⑦和⑧.lpad和rpad函数(了解)lpad(x,y,z):rpad(x,y,z):代码实现:select lpad(salary,10,'*'),rpad(salary,10,'*') from employees;2.数字函数:3个①.round(m,n):四舍五⼊②.trunc(m,n):截断③.mod(m,n):求余代码实现:select round(439.456,1),round(439.456,0),round(439.456,-1) from dual; select trunc(439.456,1),trunc(439.456,0),trunc(439.456,-1) from dual; select mod(1100,300) from dual;3.⽇期函数:3个1).⽇期2).时间①.months_between(m,n):⽤于计算两个⽇期之间相差的⽉数(精确)②.add_months(m,n):在原本的m⽉份基础上增加或者删除n个⽉③.last_day(m):得到某个⽇期所在⽉份的最后⼀天关键字:sysdate表⽰当前系统时间测试如下代码:select sysdate from dual;以上代码由于数据库内部的格式限制只能显⽰出⽇期部分数据⽽不能显⽰出时间,我们可以使⽤转换函数to_char(x,y)来实现⽇期和时间的显⽰补充:oracle中的特殊字母有以下这些yyyy:年mm:⽉dd:天day:星期hh:⼩时(1-12)hh24:⼩时(0-23)mi:分钟ss:秒重构上述代码实现⽇期时间数据的显⽰:select to_char(sysdate,'yyyy-mm-dd hh:mi:ss') from dual;参看如下代码:select sysdate +1,sysdate,sysdate -2from dual;select (sysdate - hire_date) from employees;总结:对于⽇期数据可以和数字做加减运算,得到的结果就是往前或者往后的天数对于⽇期和⽇期数据之间只能做减法运算,得到的结果就是两个⽇期数据之间相差的天数案例:1).查询公司员⼯⼊职⾄今⼀共多少天了?(使⽤截断保留到整数位,别名worked_day) select last_name,hire_date,trunc(sysdate - hire_date) "worked_day" from employees;2).查询公司员⼯⼊职⾄今⼀共多少个⽉了?(粗糙版本:假设每⽉都是30天)select last_name,hire_date,(sysdate - hire_date) /30 "month_work",months_between(sysdate,hire_date) "mon_work" from employees;3).查询公司在每个⽉倒数第⼆天⼊职的员⼯有哪些?select last_name,hire_date from employeeswhere last_day(hire_date) -1= hire_date;select last_day(sysdate) from dual;select add_months(sysdate,2),add_months(sysdate,-3) from dual;4.转换函数:3个1).to_date2).to_char3).to_number补充:转换函数中涉及到的格式字符:9-->表⽰1位99-->表⽰2位举例:select to_number('123456','999999') from dual;//早版本,需要定义格式(位数)select to_number('123456') from dual;//新版本,可以省略格式【注意事项】:在使⽤to_number函数进⾏数据转换时,我们⼀定要计算正确需要被转换的数据的长度,才能精确定义格式中需要的位数,⼀旦位数过少,直接报错!!需求:查询公司员⼯的部门编号,如果没有部门的显⽰"没有部门"select last_name,department_id,nvl(to_char(department_id,'999'),'没有部门') from employees; select last_name,department_id,nvl(to_char(department_id),'没有部门') from employees;5.通⽤函数1).nvl(expr1,expr2):2).nvl2(expr1,expr2,expr3):nvl2函数的执⾏流程:在执⾏过程中会先执⾏expr1,如果expr1的结果不为null,那么执⾏expr2;如果expr1的结果为null,那么执⾏expr3;需求:查询员⼯编号,姓名,薪资,奖⾦率;如果奖⾦率不为空,那么显⽰奖⾦率 + 0.015以后的结果,如果奖⾦率为空,那么显⽰0.01;代码实现:select employee_id,last_name,salary,commission_pct,nvl2(commission_pct,commission_pct + 0.015,0.01) "new_comm"from employees;sql中的判断结构的引⼊讲解:两种:1).case表达式模板格式:case 字段 when expr1 then xwhen expr2 then ywhen expr3 then z...else n end;需求:查询公司员⼯的编号、姓名、薪资,部门号,如果是70号部门的员⼯,就显⽰⼯资的1.1倍,如果是80号部门的员⼯,就显⽰⼯资的1.2倍,如果是90号部门的员⼯,就显⽰⼯资的1.3倍,其余部门已正常⼯资显⽰;代码如下:select employee_id,last_name,salary,department_id, case department_id when70then salary *1.1 when80then salary *1.2else salary *1.3end-- when 90 then salary * 1.3 end-- else salary endfrom employeeswhere department_id in(70,80,90);2).decode函数模板格式:decode(字段,expr1,val1,expr2,val2,...):需求:查询公司员⼯的编号、姓名、薪资,部门号,如果是70号部门的员⼯,就显⽰⼯资的1.1倍,如果是80号部门的员⼯,就显⽰⼯资的1.2倍,如果是90号部门的员⼯,就显⽰⼯资的1.3倍,其余部门已正常⼯资显⽰;代码如下:select employee_id,last_name,salary,department_id, decode(department_id,70,salary *1.1,80,salary *1.2,-- 90,salary * 1.3,salary *1.3)from employeeswhere department_id in(70,80,90);。
单行函数——精选推荐

单⾏函数所谓的单⾏函数指的就是完成某⼀具体功能的操作函数,例如:转⼤⼩写等。
⼀般⽽⾔,单⾏函数的格式:返回值函数名称(参数)。
单⾏函数分为以下⼏种:字符串函数、数值函数、⽇期函数、转换函数、通⽤函数。
1.字符串函数字符串函数是处理字符串数据的(对于字符串的数据有可能是从列上找到的,或者是直接设置的字符串常量)。
包含的函数有如下⼏种:No函数名称返回类型描述1 UPPER(列|字符串)字符串将传⼊的字符串变成⼤写形式2 LOWER(列|字符串)字符串将传⼊的字符串变成⼩写形式3 INITCAP(列|字符串)字符串开头⾸字母⼤写,其他的字母变为⼩写4 LENGTH(列|字符串)数字取得指定字符串的长度5SUBSTR(列|字符串,开始索引,[长度])字符串进⾏字符串的截取,如果没有设置长度,表⽰从截取全部6REPLACE(列|字符串,旧内容,新内容)字符串将指定的字符串数据以新数据替换旧数据范例:在Oracle⾥⾯,所有的函数如果要想进⾏验证,也必须编写SQL语句。
为了⽅便⽤户进⾏⼀些验证或者是⼀些不需要查询表的查询操作,专门提供了⼀个dual的虚拟表。
1.转⼤写⼩写操作 1)转⼤写SELECT UPPER('hello') FROM dual; 2).将所有姓名转⼩写SELECT LOWER(ename) FROM emp;⼀般在⼀些不区分数据⼤⼩写的情况都会同意的将所有的内容转成⼤写或⼩写的形式处理。
2.⾸字母⼤写其他字母⼩写 1)将所有的雇员姓名以⾸字母⼤写的形式保存SELECT INITCAP(ename) FROM emp;3.取得字符串的长度 1)基础操作SELECT LENGTH('ddffgg') FROM dual; 2)查询雇员姓名长度为5的全部雇员信息SELECT * FROM emp WHERE LENGTH(ename)=5;4.字符串截取 1)验证函数SQL> SELECT SUBSTR('helloworld',6) FROM dual;SUBSTR('HE----------worldSQL> SELECT SUBSTR('helloworld',0,5) FROM dual;SUBSTR('HE----------hello 在程序之中所有的字符串的⾸字母的索引都是0,但是在Oracle⾥⾯,所有的字符串的⾸字母索引都是1,如果设置的是0 ,那么它也会按照1的⽅式进⾏处理。