一、 to_char: 将数值型或者日期型转化为字符型 (string)
日期到字符操作
select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from dual;
二、 to_date:日期转换 to_data(date&time,format)
字符到日期操作
select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mi:ss') from dual;
字符到日期操作
  1. select to_date(’2003-10-17 21:15:37’,’yyyy-mm-dd hh24:mi:ss’) from dual ;
TO_DATE,就是转换数据类型,转换成DATE的数据类型,然后存在表中吧。
三、 row_number:
ROW_NUMBER() OVER(partition by col1 order by col2) 表示根据col1分组,在分组内部根据col2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内是连续且唯一的)。
四、 months_betweern:
MONTHS_BETWEEN函数返回两个日期之间的月份数。如果两个日期月份内天数相同,或者都是某个月的最后一天,返回一个整数,否则,返回数值带小数,以每天1/31月来计算月中剩余天数。
关于month_between函数的用法,求解释!
  select months_between(lase_day(sysdate),to_Date('20120129','yyyymmdd')) from dual = 1
  select months_between(lase_day(sysdate),to_Date('20120130','yyyymmdd')) from dual = 0.989
 select months_between(lase_day(sysdate),to_Date('20120131','yyyymmdd')) from dual = 1
 
为什么中间那个值小于1 而最后一个值又等于1?
 
------解决方案--------------------
MONTHS_BETWEEN函数返回两个日期之间的月份数。如果两个日期月份内天数相同,或者都是某个月的最后一天,返回一个整数,否则,返回数值带小数,以每天1/31月来计算月中剩余天数。
------解决方案--------------------
假设d1和d2分别和months_between()函数的两个实参。
如果d1和d2是月份中相同的一天,或都是这个月的最后一天,则会返回整数。
否则会返回带小数的结果。
------解决方案--------------------
如果两个日期月份内天数相同(你第一条sql),
或者都是某个月的最后一天(你第三条sql),
返回一个整数,
 
否则(你第二条sql),
返回数值带小数,以每天1/31月来计算月中剩余天数。
 
五、add_month:
add_months 函数主要是对日期函数进行操作,举例子进行说明
add_months 有两个参数,第一个参数是日期,第二个参数是对日期进行加减的数字(以月为单位的)
 
 
如:3个月以后的时间,可以用下列语句
SQL> select add_months(sysdate,3) from dual; 
ADD_MONTHS(SYSDATE,3)
---------------------
2012-5-16 下午 02:30:47
3个月以前的时间,可以用下列语句
SQL> select add_months(sysdate,-3) from dual;
 
ADD_MONTHS(SYSDATE,-3)
----------------------
2011-11-16 下午 02:32:39
有时需要用to_date()函数进行转换
 SELECT ADD_MONTHS(TO_DATE('2012-02-16 19:15:26','yyyy-mm-dd HH24:MI:SS'), 2) FROM dual;
 
ADD_MONTHS(TO_DATE('2012-02-16
------------------------------
2012-4-16 下午 07:15:26
 
六、minux:去同存异
minus运算的主要功能是: 在进行两个表格或者两个查询结果的时候, 
返回在第一个表格/查询结果中与第二个表格/查询结果不相同的记录
比如A表中数据如下:
ID  NAME   ADDRESS   TEL
1    ABC     AAAA        123456
2    ABD     BBBB         123455
3    ABE     CCCCC        111111
比如B表中数据如下:
ID  NAME   ADDRESS   TEL
1    ABC     AAAC       123456
2    ABD     BBBB         123455
那么
(SELECT * FROM A)
MINUS
(SELECT * FROM B)
的结果是:
1    ABC     AAAA        123456  
3    ABE     CCCCC        111111
结果中的第一行数据是由于 A,B 表中的ADDRESS不相等
结果中的第一行数据是由于 A表中的数据在B表中不存在
七、last_day:
LAST_DAY函数返回指定日期对应月份的最后一天。   
例:last_day(to_date('1999.11.29','yyyy.mm.dd'))       返回   1999年11月31日 
例:last_day(to_date('2000.02.01','yyyy.mm.dd'))       返回   2000年2月29日
八、substr:
 取得字符串中指定起始位置和长度的字符串   substr( string, start_position, [ length ])
 如:
     substr('This is a test', 6, 2)     would return 'is'
     substr('This is a test', 6)     would return 'is a test'
     substr('TechOnTheNet', -3, 3)     would return 'Net'
     substr('TechOnTheNet', -6, 3)     would return 'The'
  select substr('Thisisatest', -4, 2) value from dual    结果是   te
select substr('emros',-3,1) value from dual      结果是 r
 
九、unix_timestamp:日期转换为UNIX时间戳 --------- 返回的是秒数
select UNIX_TIMESTAMP('2014-09-10 11:01:46');
 
unix_timestamp()函数的作用是返回一个确切的时间点的UNIX时间戳,这个Unix时间戳是一个无符号整数。unix_timestamp()函数有两种重载形式,一是不带任何参数,另外一个是带有一个Date或DateTime或TimeStamp类型的参数。
    unix_timestamp(),返回自1970-1-1 8:00:00开始到当前系统时间为止的秒数。
    unix_timestamp(date),返回1970-1-1 8:00:00开始到date所代表的时间为止的秒数,对于早于1970-1-1 8:00:00的时间,总是返回 0 。
    注意:因为中国是东八区,所以是8:00:00.
 
十、from_unixtime(): UNIX时间戳转换为日期
select FROM_UNIXTIME(1410318106);
FROM_UNIXTIME(unix_timestamp,format)
返回表示 Unix 时间标记的一个字符串,根据format字符串格式化。format可以包含与DATE_FORMAT()函数列出的条目同样的修饰符。
>SELECT FROM_UNIXTIME( 1249488000, '%Y%m%d' )  
->20071120
>SELECT FROM_UNIXTIME( 1249488000, '%Y年%m月%d' )
->2007年11月20
 
十一、REGEXP_REPLACE:
SELECT REPLACE('Joe Smith',' ', ' ')
AS replace
FROM dual
REPLACE
---------
Joe Smith 
REGEXP_REPLACE 函数把替换功能向前推进了一步,其语法在表 9 中列出。以下查询用单个空格替换了任意两个或更多的空格。( ) 子表达式包含了单个空格,它可以按 {2,} 的指示重复两次或更多次。 
表 9: REGEXP_REPLACE 函数  
语法 说明
REGEXP_REPLACE(source_string, pattern
[, replace_string [, position
[,occurrence, [match_parameter]]]])
该函数用一个指定的 replace_string 来替换匹配的模式,从而允许复杂的"搜索并替换"操作。
 
SELECT REGEXP_REPLACE('Joe Smith',
'( ){2,}', ' ')
AS RX_REPLACE
FROM dual
RX_REPLACE
----------
Joe Smith 
一般函数:
十二、 left join
十三、join
十四、 right join
 
 
 
十五、常见易混淆的概念:
1.
2.hive中union all不可以使用在主查询中,必须用在子查询中。 select a from (select a from b union all select a from c ) m
3.hive中没有NVL2函数,但可以用if语句实现其功能:NVL2(CLUST_SPC_CD_B, 0, 1) 等价于 if(CLUST_SPC_CD_B is not null, 0, 1)
4.hive中每个子查询后面都要起别名。
5.Hsql中对某些字段有回车换行符号处理,会导致后续表字段错位,目前发现客户表 cert_nbr, 产品实例表 Imsi 、install_addr_desc
Sql:select regexp_replace(cert_nbr,chr(13),’’) from dual ;
Hiveql:select regexp_replace(cert_nbr,’\r’,’’) from dual;
6.hive中没有SYSDATE,但可以用 from_unixtime(unix_timestamp(),“yyyy/MM/dd HH:mm:ss”)实现。其中yyyy/MM/dd HH:mm:ss是日期的格式, 和mysql一致
7.Hive不支持where子句中的子查询,SQL常用的exist in子句需要改写
 
 
 
 
十六、较难解决的问题:
decode(months_between(to_date(to_char(c.exp_date,''yyyymm''),''yyyymm''),to_date(to_char(add_months(c.eff_date,1),''yyyymm''),''yyyymm'')),12,1,24,2,36,3,0) As agrmnt_year
 
nvl(to_char(exp_date,''yyyymm''),''300001'') > '''||v_date||'''
 
cycle_id = '||to_number(substr(v_date,1,6))||'
 
 
Delete from '||v_aim_table||'
Where date_id='||v_date||'
and std_latn_cd ='''||v_latn||'''
and std_prvnce_cd ='''||v_prov||'''
and cycle_id = '||to_number(substr(v_date,1,6))||'
and report_id = '||v_report_id_b||'';
 
 
v_sql := 'Delete from '||v_aim_table||'@to_ctgdap_ctbw
Where date_id='||v_date||'
and std_latn_cd ='''||v_latn||'''
and std_prvnce_cd ='''||v_prov||'''
and cycle_id = '||to_number(substr(v_date,1,6))||'
and report_id = '||v_report_id_d||'';
 
 
 
TO_CHAR(B.OPEN_DATE,''YYYYMM'') = ''201209''
 
 
 
WHEN TRANSLATE(C.RECV_RATE,''1234567890''||C.RECV_RATE,''1234567890'') / 1024 <= 2 THEN 1
WHEN TRANSLATE(C.RECV_RATE,''1234567890''||C.RECV_RATE,''1234567890'') / 1024 > 2 AND TRANSLATE(C.RECV_RATE,''1234567890''||C.RECV_RATE,''1234567890'') / 1024 <= 8 THEN 2
WHEN TRANSLATE(C.RECV_RATE,''1234567890''||C.RECV_RATE,''1234567890'') / 1024 > 8 AND TRANSLATE(C.RECV_RATE,''1234567890''||C.RECV_RATE,''1234567890'') / 1024 <= 20 THEN 3
WHEN TRANSLATE(C.RECV_RATE,''1234567890''||C.RECV_RATE,''1234567890'') / 1024 > 20 THEN 4
 
 
 
 
SELECT /*+PARALLEL(T1,5)+*/ T1.STD_PRVNCE_CD, T1.STD_LATN_CD, T1.PROD_INST_ID, T1.PD_INST_STATE_CD
FROM TF_PRD_PD_INST_'||V_DATE||' T1
WHERE T1.STD_PRVNCE_CD = '''||V_PROV||'''
AND T1.STD_LATN_CD = '''||V_LATN||'''
MINUS
SELECT /*+PARALLEL(T2,5)+*/ T2.STD_PRVNCE_CD, T2.STD_LATN_CD, T2.PROD_INST_ID, T2.PD_INST_STATE_CD
FROM TF_PRD_PD_INST_'||V_DATE_LAST||' T2
WHERE T2.STD_PRVNCE_CD = '''||V_PROV||'''
AND T2.STD_LATN_CD = '''||V_LATN||'''
 
 
 
 
to_char(s.inout_time,''yyyymm'') = '''||v_date||'''
 
 
 
 
                                                                  ----------------未完待续

oracle改造常见问题的更多相关文章

  1. MIP改造常见问题二十问

    在MIP推出后,我们收到了很多站长的疑问和顾虑.我们将所有疑问和顾虑归纳为以下二十个问题,希望对大家理解 MIP 有帮助. 1.MIP 化后对其他搜索引擎抓取收录以及 SEO 的影响如何? 答:在原页 ...

  2. oracle安装常见问题

    版本信息:CentOS6.5 + oracle11G 1.监视器颜色错误: [oracle@bogon database]$ 正在启动 Oracle Universal Installer... 检查 ...

  3. Linux安装oracle 10g常见问题之——ORA-01078,LRM-00109,ORA-01102

    [oracle@toughhou database]$ sqlplus /nolog SQL> conn / as sysdba SQL> startup ORA-01078: failu ...

  4. oracle的常见问题与解决

    刚接触oracle,在学习过程中遇到了很多的问题,本文章将会收藏我遇到的问题及如何解决. 错误一:ORA-28009:connection as sys should be as sysdba解决方法 ...

  5. Linux安装oracle 10g常见问题之——OUI-25031

    OUI-25031:Some of the configuration assistants failed/cancelled. 这是安装过程中常见的错误之一. 引起此错误的原因:/etc/hosts ...

  6. [置顶] Oracle GoldenGate 常见问题:长事务处理

    长事务的影响 OGG是基于事务级的实时复制工具,也就是说OGG只复制已提交的事务,在遇到事务的commit或rollback之前,它会将每个事务的操作存储在称为cache的托管虚拟内存池中.内存再大也 ...

  7. ORACLE数据库常见问题汇总

    提交事务的时候提示(数据库被一个用户锁住的解决方法) select object_id,session_id,locked_mode from v$locked_object; select t2.u ...

  8. Oracle迁移到MySQL性能下降的注意点(转)

    背景:最近有较多的客户系统由原来由Oracle改造到MySQL后出现了性能问题CPU 100%,或是后台的CRM系统复杂SQL在业务高峰的时候出现堆积导致业务故障.在我的记忆里面淘宝最初从Oracle ...

  9. 吴裕雄--天生自然 oracle学习笔记:oracle理论学习详解及各种简单操作例子

    1. 数据库的发展过程 层次模型 -->网状模型 -->关系模型 -->对象关系模型 2. 关于数据库的概念 DB:数据库(存储信息的仓库) DBMS:数据库管理系统(用于管理数据库 ...

随机推荐

  1. Form 和 Input 对象

    更改表单的 action 属性 <html> <head> <script type="text/javascript"> function c ...

  2. Java中常用的数据结构类

    结构体系图 List ArrayList.LinkedList.Vector有什么区别? ArrayList 只能装入引用对象(基本类型要转换为封装类): 线程不安全: 底层由数组实现(顺序表),因为 ...

  3. IEEE发布2017年编程语言排行榜:Python高居首位

    https://news.cnblogs.com/n/574248 编者按:本文由微信公众号“机器之心”(ID:almosthuman2014)编译,机器之心专注生产 AI 领域专业性内容.本文作者: ...

  4. 推荐个Mac OSX下的Code Editor:Atom

    首先只是当Editor用,不是整成IDE级. 先说几个大家耳熟能详的: 1.Sublime,Sublime在Mac下的安装并不完全,CLI启动需要自己ln个链接.还有一些其他原因,比如Packages ...

  5. (转)TCP协议与UDP协议的区别

    TCP协议与UDP协议的区别    首先咱们弄清楚,TCP协议和UCP协议与TCP/IP协议的联系,很多人犯糊涂了,一直都是说TCP/IP协议与UDP协议的区别,我觉得这是没有从本质上弄清楚网络通信! ...

  6. 大数据与Mapreduce

    第十五章 大数据与Maprudece 一.引言 实际生活中的数据量是非常庞大的,采用单机运行的方式可能需要若干天才能出结果,这显然不符合我们的预期,为了尽快的获得结果,我们将采用分布式的方式,将计算分 ...

  7. 多线程中操作UI

    遇到过要在工作线程中去更新UI以让用户知道进度,而在多线程中直接调用UI控件操作是错误的做法. 最后解决方法是将操作UI的代码封装,通过Invoke / BeginInvoke 去委托调用. 代码封装 ...

  8. python笔记:#004#注释

    注释 目标 注释的作用 单行注释(行注释) 多行注释(块注释) 01. 注释的作用 使用用自己熟悉的语言,在程序中对某些代码进行标注说明,增强程序的可读性 02. 单行注释(行注释) 以 # 开头,# ...

  9. python爬虫入门(七)Scrapy框架之Spider类

    Spider类 Spider类定义了如何爬取某个(或某些)网站.包括了爬取的动作(例如:是否跟进链接)以及如何从网页的内容中提取结构化数据(爬取item). 换句话说,Spider就是您定义爬取的动作 ...

  10. Flask入门之Pycharm写Hello Word

    在这里记录整理Flask入门的笔记! 今天讲讲使用Pycharm写一个Hello World 前提是已经安装好Pycharm,安装过程很简单,这里不赘述. 只放两个可以提供注册码的网站: Intell ...