欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

Oracle中substr() 函数和左右链接

程序员文章站 2022-06-15 19:15:38
...

此SQL文使用了右连接,即ldquo;(+)rdquo;所在位置的另一侧为连接的方向,右连接说明等号右侧的所有记录均会被显示,无论其在左

substr() 函数: 返回字符串的一部分。
  语法:substr(string,start,length)
  必需 - 规定在字符串的何处开始。
  正数 - 在字符串的指定位置开始
  负数 - 在从字符串结尾的指定位置开始
   0 - 在字符串中的第一个字符处开始

例子:
substr("ABCDEFG", 0); //返回:ABCDEFG,截取所有字符
substr("ABCDEFG", 2); //返回:CDEFG,截取从C开始之后所有字符
substr("ABCDEFG", 0, 3); //返回:ABC,截取从A开始3个字符
substr("ABCDEFG", 0, 100); //返回:ABCDEFG,100虽然超出预处理的字符串最长度,但不会影响返回结果,系统按预处理字符串最大数量返回。
substr("ABCDEFG", 0, -3); //返回:EFG,注意参数-3,为负值时表示从尾部开始算起,,字符串排列位置不变。

左连接和右连接:
在Oracle PL-SQL中,左连接和右连接以如下方式来实现
SELECT emp_name, dept_name
FORM Employee, Department
WHERE Employee.emp_deptid(+) = Department.deptid

此SQL文使用了右连接,即“(+)”所在位置的另一侧为连接的方向,右连接说明等号右侧的所有记录均会被显示,无论其在左侧是否得到匹配,也就是说上例中无论会不会出现某个部门没有一个员工的情况,这个部门的名字都会在查询结果中出现。

反之:
SELECT emp_name, dept_name
FORM Employee, Department
WHERE Employee.emp_deptid = Department.deptid(+)则是左连接,无论这个员工有没有一个能在Department表中得到匹配的部门号,这个员工的记录都会被显示。