Oracle的substr和instr函数简单用法_oracle_脚本之家

by admin on 2019年11月26日

在Oracle数据库中,Oracle
to_date()函数是我们经常使用的函数,下面就为您详细介绍Oracle
to_date()函数的用法,希望可以对您有所启迪。

round返回四舍五入后的值
x,y,数字型表达式,如果y不为整数则截取y整数部分,如果y>0则四舍五入为y位小数,如果y小于0则四舍五入到小数点向左第y位。
select round,round,round from dual; 返回: 5555.67 , 5600 , 5556
返回截取后的值,用法同round,只是不四舍五入
trunc返回x按精度y截取后的值
x,y,数字型表达式,如果y不为整数则截取y整数部分,如果y>0则截取到y位小数,如果y小于0则截取到小数点向左第y位,小数前其它数据用0表示。
select trunc,trunc,trunc from dual; 返回:5555.66 5500 5555
返回截取后的值,用法同trunc,只是要做四舍五入**

含义解释:

1. 查询住址在北京的学生

Oracle的substr函数简单用法

to_date()与24小时制表示法及mm分钟的显示:

decode(条件,值1,返回值1,值2,返回值2,…值n,返回值n,缺省值)

SELECT student_id,student_nameFROM studentsWHERE CONTAINS

substr //返回截取的字

一、在使用Oracle的to_date函数来做日期转换时,很多Java程序员也许会直接的采用”yyyy-MM-dd
HH:mm:ss”的格式作为格式进行转换,但是在Oracle中会引起错误:”ORA 01810
格式代码出现两次”。

IF 条件=值1 THEN RETURNELSIF 条件=值2 THEN RETURN ......ELSIF 条件=值n THEN RETURNEND IFdecode

remark: beijing是一个单词,要用单引号括起来。

substr //返回结果为 ‘H’
*从字符串第一个字符开始截取长度为1的字符串substr //返回结果为 ‘H’
*0和1都是表示截取的开始位置为第一个字符substr //返回结果为
‘ello’substr//返回结果为 ‘rld’
*负数表示截取的开始位置为字符串右端向左数第i个字符

select to_date(‘2005-01-01 13:14:20′,’yyyy-MM-dd HH24:mm:ss’) from
dual;

这个函数运行的结果是,当字段或字段的运算的值等于值1时,该函数返回值2,否则返回值3当然值1,值2,值3也可以是表达式,这个函数使得某些sql语句简单了许多

2. 查询住址在河北省的学生

select substr value from dual;

如:原因是SQL中不区分大小写,MM和mm被认为是相同的格式代码,所以Oracle的SQL采用了mi代替分钟。

使用方法:

SELECT student_id,student_nameFROM studentsWHERE CONTAINS( address, '"HEIBEI province"' )

附:java中substring的简单用法

select to_date(‘2005-01-01 13:14:20′,’yyyy-MM-dd HH24:mi:ss’) from
dual;

select decode,-1,变量1,变量2) from dual; –取较小值

remark: HEBEI province是一个词组,在单引号里还要用双引号括起来。

作用:从字符串索引为index1的字符开始截取长度为index2-index1 的字符串。

二、另要以24小时的形式显示出来要用HH24

sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1

3. 查询住址在河北省或北京的学生

String str="Hello World";System.out.println;

select to_char(sysdate,’yyyy-MM-dd HH24:mi:ss’) from
dual;//mi是分钟select to_char(sysdate,’yyyy-MM-dd HH24:mm:ss’) from
dual;//mm会显示月份

变量1=10,变量2=20

SELECT student_id,student_nameFROM studentsWHERE CONTAINS( address, '"HEIBEI province" OR beijing' )

打印结果为:Hello

oracle中的to_date参数含义

则sign返回-1,decode解码结果为“变量1”,达到了取较小值的目的。

remark: 可以指定逻辑操作符。

Oracle中INSTR的用法:

1.日期格式参数 含义说明

2、此函数用在SQL语句中,功能介绍如下:

4. 查询有 ‘南京路’ 字样的地址

INSTR方法的格式为

D 一周中的星期几 DAY 天的名字,使用空格填充到9个字符 DD 月中的第几天 DDD
年中的第几天 DY 天的简写名 IW ISO标准的年中的第几周 IYYY
ISO标准的四位年份 YYYY 四位年份 YYY,YY,Y 年份的最后三位,两位,一位 HH
小时,按12小时计 HH24 小时,按24小时计 MI 分 SS 秒 MM 月 Mon 月份的简写
Month 月份的全名 W 该月的第几个星期 WW 年中的第几个星期
1.日期时间间隔操作 当前时间减去7分钟的时间 select sysdate,sysdate –
interval ‘7’ MINUTE from dual 当前时间减去7小时的时间 select sysdate –
interval ‘7’ hour from dual 当前时间减去7天的时间 select sysdate –
interval ‘7’ day from dual 当前时间减去7月的时间 select sysdate,sysdate

Decode函数与一系列嵌套的
IF-THEN-ELSE语句相似。base_exp与compare1,compare2等等依次进行比较。如果base_exp和
第i 个compare项匹配,就返回第i 个对应的value
。如果base_exp与任何的compare值都不匹配,则返回default。每个compare值顺次求值,如果发现一个匹配,则剩下的compare值就都不再求值。一个为NULL的base_exp被认为和NULL
compare值等价。如果需要的话,每一个compare值都被转换成和第一个compare
值相同的数据类型,这个数据类型也是返回值的类型。

SELECT student_id,student_nameFROM studentsWHERE CONTAINS( address, 'nanjing NEAR road' )

INSTR(源字符串, 要查找的字符串, 从第几个字符开始,
要找到第几个匹配的序号)返回找到的位置,如果找不到则返回0.

  • interval ‘7’ month from dual 当前时间减去7年的时间 select
    sysdate,sysdate – interval ‘7’ year from dual 时间间隔乘以一个数字
    select sysdate,sysdate – 8 *interval ‘2’ hour from dual

    select sysdate,to_char(sysdate,’yyyy-mm-dd hh24:mi:ss’) from dual select sysdate,to_char(sysdate,’yyyy-mm-dd hh:mi:ss’) from dual select sysdate,to_char(sysdate,’yyyy-ddd hh:mi:ss’) from dual select sysdate,to_char(sysdate,’yyyy-mm iw-d hh:mi:ss’) from dual

Decode函数在实际开发中非常的有用

remark: 上面的查询将返回包含 ‘nanjing road’,’nanjing east
road’,’nanjing west road’ 等字样的地址。 A NEAR B,就表示条件: A 靠近
B。

例如:INSTR(‘CORPORATE FLOOR’,’OR’, 3, 2)中,源字符串为’CORPORATE
FLOOR’,
在字符串中查找’OR’,从第三个字符位置开始查找”OR”,取第三个字后第2个匹配项的位置。

参考oracle的相关关文档(ORACLE901DOC/SERVER.901/A90125/SQL_ELEMENTS4.HTM#48515)

结合Lpad函数,如何使主键的值自动加1并在前面补0

5. 查询以 ‘湖’ 开头的地址

默认查找顺序为从左到右。当起始位置为负数的时候,从右边开始查找。

select to_date(‘2003-10-17 21:15:37′,’yyyy-mm-dd hh24:mi:ss’) from dual

select LPAD,0,1,max,14,'0') 记录编号 from tetdmis eg: select decode from a1_interval
SELECT student_id,student_nameFROM studentsWHERE CONTAINS

所以SELECT INSTR(‘CORPORATE FLOOR’, ‘OR’, -1, 1) “aaa” FROM
DUAL的显示结果是

具体用法和上面的to_char差不多。

dir 的值是1变为0,是0则变为1

remark: 上面的查询将返回包含 ‘hubei’,’hunan’ 等字样的地址。 记住是
*,不是 %。

  1. trunk/ ROUND函数的使用

    select trunc from dual select trunc from dual select to_char(trunc,’YYYY’) from dual

比如我要查询某班男生和女生的数量分别是多少?

6. 类似加权的查询

5.oracle有毫秒级的数据类型

select count from 表 where 性别 = 男;select count from 表 where 性别 = 女;
SELECT student_id,student_nameFROM studentsWHERE CONTAINS( address, 'ISABOUT , county wright 
--返回当前时间 年月日小时分秒毫秒 select to_char,'DD-MON-YYYY HH24:MI:SSxFF') from dual; --返回当前 时间的秒毫秒,可以指定秒后面的精度 select to_char,'MI:SSxFF') from dual;

要想显示到一起还要union一下,太麻烦了

remark: ISABOUT 是这种查询的关键字,weight 指定了一个介于
0~1之间的数,类似系数。表示不同条件有不同的侧重。

6.计算程序运行的时间

用decode呢,只需要一句话

7. 单词的多态查询

declare type rc is ref cursor; l_rc rc; l_dummy all_objects.object_name%type; l_start number default dbms_utility.get_time; begin for I in 1 .. 1000 loop open l_rc for 'select object_name from all_objects '|| 'where object_id = ' || i; fetch l_rc into l_dummy; close l_rc; end loop; dbms_output.put_line ( round( (dbms_utility.get_time-l_start)/100, 2 ) || ' seconds...' ); end; 
select sum,sum from 表eg:select sum(decode,sum(decode from facd605;select sum(case siteno when 'LT' then 1 else 0 end),sum(case siteno when 'SZ' then 1 else 0 end) from facd605;vinson
SELECT student_id,student_nameFROM studentsWHERE CONTAINS( address, 'FORMSOF ' )

总结

remark: 查询将返回包含 ‘street’,’streets’等字样的地址。
对于动词将返回它的不同的时态,如:dry,将返回 dry,dried,drying 等等。

以上所述是小编给大家介绍的Oracle 中 decode
函数用法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

8. 词查询示例

词查询是对输入到 CONTAINS
运算符中单引号间的精确单词或短语的查询。在以下示例中,我们将查找文本列中包含
oracle 一词的所有文档。每行的分值由使用标签 1 的 SCORE 运算符选定:

SELECT SCORE title from news WHERE CONTAINS> 0;

在查询表达式中,可以使用 AND 和 OR
等文本运算符来获取不同结果。还可以将结构性谓词添加到 WHERE
子句中。可以使用 count、CTX_QUERY.COUNT_HITS 或 CTX_QUERY.EXPLAIN
来计算查询的命中 数目。

9 ABOUT查询示例

在所有语言中,ABOUT查询增加了某查询所返回的相关文档的数目。在英语中,ABOUT
查询可以使用索引的主题词组件,该组件在默认情况下创建。这样,运算符将根据查询的概念返回文档,而不是仅依据所指定的精确单词或短语。例如,以下查询将查找文本列中关于主题
politics 的所有文档,而不是仅包含 politics 一词的文档:

SELECT SCORE title from news WHERE CONTAINS(text, 'about > 0;

总结

以上所述是小编给大家介绍的Oracle 中Contains
函数的用法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图