简介 目录 评价 推荐
  • 慕九州州 2021-05-12
    ORACLE11中month_between提示标识符无效
    1回答·818浏览
  • 慕九州州 2021-05-12
    这种为什么会报错啊:截取集仅能有一个字符
    5回答·800浏览
  • 慕斯卡6169147 2020-12-04
    这个是练习哟
    1回答·626浏览
  • 慕先生33592250 2020-11-25
    为什么子串列名称被限制了长度?
    1回答·627浏览
  • weixin_慕少2076595 2020-08-08
    15年的课程了 现在都20年了。。。。

    白嫖就完了

    1回答·694浏览
  • 慕婉清0618636 2019-03-23
    正弦读音是[zhèng xián]吧?
    2回答·2531浏览
  • 180416 2018-12-07
    months_between(date1,date2) 老师说返回日期想减,怎么写
    4回答·1800浏览
  • 180416 2018-12-06
    惨了,我把dual truncate了,怎么恢复

    重装。。。。

    2回答·1344浏览
  • 慕妹6370543 2018-08-05
    为什么select to numbei('$1,000,'$9999')from dual中转换后的格式一定要加$吗?

    前后必须一致https://img4.mukewang.com/5b6807a20001649d06520557.jpg

    1回答·1407浏览
  • jacklong555 2018-05-31
    本地安装了oracle客户端,统计数据时如果你能从客户端上上传一组数据用SQL统计数据就特别方便了,这个该如何操作呢,客户端是developer

    developer是指的pl/sql developer?

    1回答·1124浏览
  • qq_pur_0 2018-04-16
    Oracle数据类型转换

    http://blog.sina.com.cn/s/blog_53a1165e01016ja9.html

    2回答·1360浏览
  • 素心8 2017-07-22
    oracle 中的 ogg
    0回答·1312浏览
  • 脏蚊亲 2017-07-06
    相隔的天数
    0回答·1205浏览
  • 0110号建筑师 2017-06-09
    from dual中的dual是什么?
    已采纳 持之以恒Java 的回答

    一张虚表,dual是一个虚拟表,用来构成select的语法规则,oracle保证dual里面永远只有一条记录。我们可以用它来做很多事情。

    2回答·2895浏览
  • 一天雨 2017-05-04
    分析函数怎么用

    CSDN上有很多 

    3回答·1427浏览
  • 慕粉1538058546 2017-02-07
    查询一个固定时间之前入职

    select * from emp where (sysdate - regdate ) > (365 * 5);

    日期相减可以获取相隔天数。


    2回答·2663浏览
  • 慕粉0923403620 2016-11-24
    有完整的orecle课程吗

    慕课上面的讲的很好啊。。collen7788老师讲的很不错,,值得学习,触发器,存储过程,存储函数,高级查询,plsql,你就这么学等等

    2回答·1538浏览
  • 獨家記憶3129562 2016-10-17
    首字母大写函数INITCAP(char)

    INITCAP(字符串 | 列):开头首字母大写;


    1回答·2083浏览
  • 獨家記憶3129562 2016-10-17
    首字母大写函数INITCAP(char)

    看下?
    http://img.mukewang.com/580578da0001d1b304100193.jpg

    2回答·1819浏览
  • 低调的张小白 2016-10-14
    trim(c2 from c1) 为什么只能去除首个字符?
    已采纳 遇见了王某某 的回答

    只能匹配第一个 然后如果第一个没有就不可以去除,就直接结束 ,如果第一个是 就去除 然后看第二个 ,第二个是就去除 不是就结束

    2回答·1787浏览
  • 少大大 2016-09-03
    这门课在数据库学习的重要性怎么样啊
    已采纳 慕粉3699548 的回答

    一般,如果你以前对基础函数比较扎实的话可以不用学习,如果你是零基础的话建议你看一遍对你很有用的哦

    3回答·1736浏览
  • 少大大 2016-09-03
    老师的课哪里还有啊
    已采纳 花里狐邵 的回答

    你这问题回答方式

    2回答·1378浏览
  • 慕粉3807604 2016-09-03
    Oracle的常用函数要求?

    1、能够掌握Oracle的常用函数 2、能够在查询中熟练使用Oracle函数,以方便数据的查询统计。

    先通学一遍,尽量多记,等到用的时候至少知道有这个函数,记不住的在百度。

    1回答·1348浏览
  • 慕粉3807604 2016-09-03
    视屏的画质可以调么
    1回答·1138浏览
  • 慕粉3807604 2016-09-03
    声音听不清啊
    已采纳 花里狐邵 的回答

    带耳机会好很多

    1回答·1229浏览
  • 少大大 2016-09-03
    这门课的重点有不
    已采纳 花里狐邵 的回答

    你知道啊     1、能够掌握Oracle的常用函数 2、能够在查询中熟练使用Oracle函数,以方便数据的查询统计

    2回答·1444浏览
  • mounsr 2016-07-22
    trim和itrim的具体用法?

    trim(c2 from c1) 表示从c1字符串中去除c2这个字符,注意截取集只能有一个字符;

    例:select trim('a' from 'abc') from dual; 结果为bc

    如果写成select trim('ab' from 'abc') from dual;就会提示出错

    注意:只能匹配第一个 然后如果第一个没有就不可以去除,就直接结束 ,如果第一个是 就去除 然后看第二个 ,第二个是就去除 不是就结束

    例:select trim(‘b’ from ‘abc’) from dual;

    结果:abc

    3回答·2273浏览
  • 普拉特罗 2016-07-18
    当除数为零时取余的结果不为零呀,老师您是不是说错了呢?

    MOD(m,n)的意思是m对n取余数,如MOD(5,2)即5÷2=2...1,5除以2等于2余1,余数即那个1,任何数对0取余都是他本身

    4回答·1672浏览
  • qq_Sunshinegirl_53442984 2016-06-02
    函数的分类

    函数分类

    内置函数:数值函数、字符函数、日期函数、转换函数

    1、数值函数

    (1)、四舍五入

    round(n,m)

    省略m:默认为:0

    m>0:小数点后m位

    m<0:小数点前m位

    注意:oracle中不能直接使用函数,必须包含一个目标表dual,即select 函数 from  dual;   (dual作为目标表)

    如:select round(23.4),round(23.45,1),round(23.45,-1) from dual;

    结果:23  23.5  20

    (2)、取整函数

    ceil(n):--取最大值

    floor(n):--取最小值

    如:select ceil(23.45),floor(23.45) from dual;

    结果:24 23

    (3)、常用计算

    1)取绝对值:abs(n)

    如:select abs(23.45),abs(-23) from dual;

    结果:23.45 23

    2)取余数:mod(m,n)

    如果m和n中有一个为null值,则结果为null

    如:select mod(5,2),mod(5,null) from dual;

    结果:1 

    3)数值的n次幂:power(m,n)

    如:23用power(2,3)表示,结果8

    Select power(2,3),power(null,2) from dual;

    结果:8、有null值,则结果也为null

    4)平方根:sqrt(n)

    如:Select sqrt(16),sqrt(null) from dual;

    结果:4、有null值,则结果也为null

    (4)、三角函数

    sin(n) 、asin(n) 反正弦

    cos(n)、acos(n) 反余弦

    tan(n)、atan(n) 反真切

    例:select sin(3.14159265359/6) from dual;

    结果:0.5

    2.字符函数

    (1)、大小写转换函数
    1)upper(chars):表示全部转大写

    2)lower(chars):表示全部转小写

    3)initcap(chars):表示把首字母大写,后面的字符全部小写

    (2)、获取子字符串函数

    substr(char,[m,n]) m表示取子串的开始位置 n表示截取子串的位数

    例:select substr('abcde',2,3) ,substr('abcde',2),substr('abcde',-2,1) from dual;

    结果为: bcd bcde d

    注意:m=0表示从首字母开始截取,n可以省略表示从m的位置截取到字符串末尾;

    如果m=0且省略n那么结果仍为源字符串;

    如果m为负数表示从字符串的尾部开始截取

    select substr('abcdefg',-5,4) from dual;

    结果:cdef

    3、日期函数

    1)、系统函数

    sysdate

    默认格式:DD-MON-RR(日月年)

    如:Select sysdate from dual;

    2)、日期操作

    ①add_months(date,i)

    如:select add_months(sysdate,3),add_months(sysdate,-3) from dual;

    结果:04-9月 -16      04-3月 -16

    ②next_day(date,char)

    如:select next_day(sysdate,'星期日') from dual;;

    结果:显示下一个的周日的日期 05-6月 -16

    ③last_day(date)

      如:select last_day(sysdate) from dual;

      结果:查看当月最后一天 30-6月 -16

    ④months——between(date1,date2)

      如:select months_between(sysdate,'4-8月-16') from dual;

    结果:查看两个日期之间相隔的月份,返回值是小数  -2

    PS:要获取两个日期相隔多少天,可以用两个日期直接相减得到多少天。

    ⑤extract(date from datetime)--获取时间戳

    如:select extract(year from sysdate) from dual;(month或者day)

    如果想得到时分秒,例子如下:(用timestamp)

    select extract(hour from timestamp '2016-10-1  9:56:4') from dual;

    (minute或second)

        4、转换函数

         1)、日期转换成字符的函数

    to_char(date,fmt,params)

    参数说明:

    date:将要转换的日期

    fmt:转换的格式

    params:日期的语言

    默认格式:DD-MON-RR(天月年)

    YY YYYY YEAR(年)

    MM MONTH(月)

    DD  DAY(天)

    HH24  HH12(24、12制)

    MI(分) SS(秒)

    如:select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') from dual;

    结果:2016-06-04 10:03:50

    2)、字符转换成日期的函数

    to_date(char,fmt,params)

    params:用于指定日期的语言(一般不写)

    如:select to_date('2016-05-22','YYYY-MM-DD') from dual;

    注意:to_date() 按照系统默认格式显示日期

    3)、数字转换成字符的函数

    to_char(number,fmt)

    9:显示数字并忽略前面的0

    0:显示数字,位数不足,用0补齐

    .或D:显示小数点

    ,或G:显示千位符

    $:美元符号

    S:加正负号(前后都可以,但不可同时加)

    如:select to_char(5123.456,'S$99,999.99')from dual;

    结果:+$5,123.46

    4)、字符转换成数字的函数

    to_number(char,fmt)

    fmt是转换的格式,可以省略

    如:select to_number('$2,000','$9999') from dual;

    结果:2000


    2回答·1162浏览
  • 慕容5378028 2016-05-14
    数据导出到excle脚本语句
    已采纳 yuantongxin 的回答

    无法直接保存到excel中,但是可以保存到csv文件,同样是excel的格式,方法如下:
    譬如要把文件生成在d盘下的test目录下:
    1,在d盘根目录下新建test目录
    2,sqlplus以system用sysdba登录
    3,create or replace directory TMP as ’d:\test’;
    4,grant read on directory TMP to user;
    5,alter system set utl_file_dir='d:\test' scope=spfile;
    然后建立存储过程,表是随便建了一个,最后的文件名按要求需要按照当前日期的前一天生成,所以后边文件名的地方write_file_name处就按照要求来了
    create or replace PROCEDURE SP_OUTPUT
    (
    on_flag      OUT      NUMBER,
    out_reason   OUT      VARCHAR2)
    is
    v_code          number;
    v_text          varchar2(255);

    file_handle utl_file.file_type;
    Write_content VARCHAR2(1024);
    Write_file_name VARCHAR2(50);
    v_aaa varchar2(5);
    v_bbb varchar2(5);

    cursor cur_sp_out
    is
    select aaa,bbb
    from aaa;
    begin
    open cur_sp_out;
    loop
       fetch cur_sp_out into   v_aaa,v_bbb;
       exit when cur_sp_out%notfound;
       write_file_name := to_char(SYSDATE,'YYYYMMDD')||'.xls';
                                file_handle := utl_file.fopen('TMP',write_file_name,'a');
                                write_content := v_aaa||' '||v_bbb;
                               --write file
                                IF utl_file.is_open(file_handle) THEN
                                   utl_file.put_line(file_handle,write_content);
                               END IF;
                               --close file
                               utl_file.fclose(file_handle);
       end loop;
       close cur_sp_out;

      v_code := 0;
    v_text := '完成';
    exception
    when others then
    on_flag := SQLCODE;
       out_reason := SQLERRM;
       begin
       IF utl_file.is_open(file_handle) THEN
       utl_file.fclose(file_handle);
       end IF;
       end;
       rollback;
    end;

    这样基本就完成了,但是建立完毕后需要重启数据库,否则文件写不进指定的目录下

    需要注意的是: write_content := v_aaa||' '||v_bbb;   这个位置

    v_aaa|| 和v_bbb中间引号的地方是TAB符,否则输出来的XLS文件中,会把这些字符串合在一个单元格中。

    1回答·1303浏览
数据加载中...
开始学习 免费