精华内容
下载资源
问答
  • oracle提供的单行函数中,针对不同的数据类型,提供大量实用的函数,同时提供一系列数据类型转换函数。  相信这些函数,在进行数据库的操作过程中,都大量的被使用过。。  1)to_char   数值、日期->字符型 ...

    oracle有三种最基本的数据类型,即字符型、数值型、日期型。 

    oracle提供的单行函数中,针对不同的数据类型,提供大量实用的函数,同时提供一系列数据类型转换函数。 

    相信这些函数,在进行数据库的操作过程中,都大量的被使用过。。 

    1)to_char 

        数值、日期->字符型 

        语法:to_char(num|date,[format mask],[nls_parameters]) 

        参数:num|date 待转换的数值或者日期 

                format mask:可选参数

     

    数字->字符型的可用格式

     

     

    格式元素

    元素说明

    格式

    数字

    字符结果

    9

    数字宽度

    9999

    12

    12

    0

    显示前面的零

    09999

    0012

    00012

    .

    小数点的位置

    09999.999

    030.40

    00030.400

    D

    小数点分隔符的位置(默认为句点)

    09999D999

    030.40

    00030.400

    ,

    逗号的位置

    09999,999

    03040

    00003,040

    G

    组分隔符的位置(默认为逗号)

    09999G999

    03040

    00003,040

    $

    美元符号

    $099999

    03040

    $003040

    L

    当地货币

    L099999

    03040

    GBP003040如果nls_currency设置为GBP

    MI

    表示负数的减号的位置

    99999MI

    -3040

    3040-

    PR

    包围在括号内的负数

    99999PR

    -3040

    <3040>

    EEEE

    科学计数法

    99.99999EEEE

    121.976

    1.21976E+02

    U

    Nls_dual_currency

    U099999

    03040

    CAD003040如果nls_dual_currency设置为CAD

    V

    乘以10n次(n是V之后9的数量)

    9999V99

    3040

    304000

    S

    前面加上+或者-

    S999999

    3040

    +3040

      

    日期->字符型的可用格式(示例日期:02-JUN-1975)

     

     

    格式说明

    说明

    结果

    Y

    年的最后一位

    5

    YY

    年的最后两位

    75

    YYY

    年的最后三位

    975

    YYYY

    四位数字表示的年

    1975

    RR

    两位数字表示的年

    75

    YEAR

    区别大小写并用英语拼写的年

    NINETEEN SEVENTY-FIVE

    MM

    两位数表示的月

    06

    MON

    月的三个字母缩写

    JUN

    MONTH

    区分大小写并用英语拼写的月

    JUNE

    D

    星期几

    2

    DD

    月的两位数日(即是本月的第几天)

    02

    DDD

    年的日

    153

    DY

    星期的三个字母缩写

    MON

    DAY

    区分大小写并用英语拼写的星期

    MONDAY

     

     

    其他不常用的格式掩码

    演示数据:24-SEP-1000 BC

     

    格式元素

    说明

    结果

    W

    月的周数

    4

    WW

    年的周数

    39

    Q

    年的季度

    3

    CC

    世纪

    10

    S preceding CC,YYYY,YEAR

    如果日期是BC,那么减号就在结果之前

    -10,-1000或者-ONE THOUSAND

    IYYY,IYY,IY,I

    分别表示4,3,2,1为ISO日期

    1000,000,00,0

    BC,AD,B.C. and A.D.

     

     

    J

    儒略日—从公元前4713年12月31日开始的天数

    1356075

    IW

    ISO标准周(1到53)

    39

    RM

    用罗马数字表示的月

    IX

     

    时间组件的日期格式掩码

    演示数据:27-JUN-2010 21:35:13

     

    格式元素

    说明

    结果

    AM,PM,A.M.和P.M.

    子午线指示器

    PM

    HH,HH12,HH24

    一天的小时,1-12时和0-23时

    09,09,21

    MI

    分(0-59)

    35

    SS

    秒(0-59)

    12

    SSSSS

    午夜之后的秒(0-86399)

    77713

     

    其他日期格式掩码


    格式元素

    说明和格式掩码

    结果

    -/.,?#!

    标点符号:’MM.YY’

    09.08

    “any character literal”

    字符值:’”Week” W “”of” Month’

    Week 2 of September

    TH

    位置或者序数文本:’DDth”of”Month’

    12TH of September

    SP

    拼写出数字:’MmSP Month YYYYSP’

    Nine September Two Thousand  Eight

    THSP or SPTH

    拼写出位置或者序数:’hh24SpTh’

    Fourteenth

     

    2)to_date

    字符值->日期值 

    语法:to_date (string,[format mask],[nls_parameters]) 

     参数:string 待转换的字符值 

                format mask:可选参数

          格式掩码同to_char转换为date时相同。

    备注:转换时要根据给定的string设定正确的格式掩码,否则

          Ora_01840:input value is not long enough for date format.

          Ora_01862:the numeric value does not match the length of the format item.

    3) to_number

    字符值->数字值 

    语法:to_number (string,[format mask],[nls_parameters]) 

     参数:string 待转换的字符值 

                format mask:可选参数

          格式掩码同to_char转换为number时相同。

    备注:如果使用较短的格式掩码就会返回错误。

           例如: to_number(123.56,’999.9’)返回错误。


     

    在oracle中,如果不同的数据类型之间关联,如果不显式转换数据,则它会根据以下规则对数据进行隐式转换

     

    1) 对于INSERT和UPDATE操作,oracle会把插入值或者更新值隐式转换为字段的数据类型。

       假如id列的数据类型为number

       update t set id='1'; -> 相当于 update t set id=to_number('1');

       insert into t(id) values('1') -> insert into t values(to_number('1'));

     

    2) 对于SELECT语句,oracle会把字段的数据类型隐式转换为变量的数据类型。

       如假设id列的数据类型为varchar2

       select * from t where id=1; -> select * from t where to_number(id)=1;

       但如果id列的数据类型为number,则

       select * from t where id='1'; -> select * from t where id=to_number('1');(参考下文)

     

    3) 当比较一个字符型和数值型的值时,oracle会把字符型的值隐式转换为数值型。

        如假设id列的数据类型为number

        select * from t where id='1'; -> select * from t where id=to_number('1');

     

    4) 当比较字符型和日期型的数据时,oracle会把字符型转换为日期型。

        如假设create_date为字符型,

        select * from t where create_date>sysdate; -> select * from t where to_date(create_date)>sysdate;(注意,此时session的nls_date_format需要与字符串格式相符)

        假设create_date为date型,

        select * from t where create_date>'2006-11-11 11:11:11'; -> select * from t where   create_date>to_date('2006-11-11 11:11:11'); (注意,此时session的nls_date_format需要与字符串格式相符)

     

    5) 如果调用函数或过程等时,如果输入参数的数据类型与函数或者过程定义的参数数据类型不一直,则oracle会把输入参数的数据类型转换为函数或者过程定义的数据类型。

       如假设过程如下定义 p(p_1 number)

       exec p('1'); -> exec p(to_number('1')); 6)

       赋值时,oracle会把等号右边的数据类型转换为左边的数据类型。

       如 var a number a:='1'; - > a:=to_number('1');

     

    7) 用连接操作符(||)时,oracle会把非字符类型的数据转换为字符类型。

        select 1||'2' from dual; -> select to_char(1)||'2' from dual;

    8) 如果字符类型的数据和非字符类型的数据(如number、date、rowid等)作算术运算,则oracle会将字符类型的数据转换为合适的数据类型,这些数据类型可能是number、date、rowid等。

        如果CHAR/VARCHAR2 和NCHAR/NVARCHAR2之间作算术运算,

        则oracle会将她们都转换为number类型的数据再做比较。

    9) 比较CHAR/VARCHAR2 和NCHAR/NVARCHAR2时,如果两者字符集不一样,则默认的转换方式是将数据编码从数据库字符集转换为国家字符集。

     

    简单总结:

    比较时,一般是字符型转换为数值型,字符型转换为日期型

    算术运算时,一般把字符型转换为数值型,字符型转换为日期型

    连接时(||),一般是把数值型转换为字符型,日期型转换为字符型

    赋值、调用函数时,以定义的变量类型为准。

    展开全文
  • ORACLE进制转换函数

    千次阅读 2010-03-21 01:28:00
    oracle中没有16进制转2进制的函数,为了工作方便,自己写了一个create or replace function hex_to_bin(hex varchar2) return varchar2 is v_hex varchar2(10000); v_len number; v_var varchar2(10000); v_...

    oracle中没有16进制转2进制的函数,为了工作方便,自己写了一个

    create or replace function hex_to_bin(hex varchar2) return varchar2 is
      v_hex    varchar2(10000);
      v_len    number;
      v_var    varchar2(10000);
      v_result varchar2(10000) := '';
    begin
      v_hex := upper(hex);
      v_len := length(v_hex);
      for i in 1 .. v_len loop
        v_var    := case substr(v_hex, i, 1) when '0' then '0000' when '1' then '0001' when '2' then '0010' when '3' then '0011'
        when '4' then '0100' when '5' then '0101' when '6' then '0110' when '7' then '0111' when '8' then '1000' when '9' then '1001'
        when 'A' then '1010' when 'B' then '1011' when 'C' then '1100' when 'D' then '1101' when 'E' then '1110' when 'F' then '1111' end;
        v_result := v_result || v_var || ' ';
      end loop;
      return v_result;
    end hex_to_bin;

    例子:

    SQL> select hex_to_bin('0A11') from dual;

     

    HEX_TO_BIN('0A11')

    --------------------------------------------------------------------------------

    0000 1010 0001 0001

    16进制转10进制 ,ORACLE里面有个to_number函数 可以实现
    SQL> select to_number('ABC','XXX') from dual;
    TO_NUMBER('ABC','XXX')
    ----------------------
                      2748
    10进制转16进制,ORACLE里面有个to_char函数 可以实现
    SQL> select to_char('2748','XXX') from dual;
    TO_CHAR('2748','XXX')
    ---------------------
     ABC
    2进制转10进制,ORACLE里面有个bin_to_num函数可以实现
    SQL> select bin_to_num(1,1,1,1,0) from dual;
    BIN_TO_NUM(1,1,1,1,0)
    ---------------------
                       30

    展开全文
  • 1.mysql [localhost] {msandbox} > select hex(convert('寰堝睂' using gbk)); +-------------------------------------+...
    1.mysql [localhost] {msandbox} > select hex(convert('寰堝睂' using gbk));
    +-------------------------------------+
    | hex(convert('寰堝睂' using gbk))    |
    +-------------------------------------+
    | E5BE88E5B18C                        |
    +-------------------------------------+
    1 row in set (0.01 sec)
    mysql [localhost] {msandbox} ((none)) > select convert(0xE5BE88E5B18C using utf8);
    +------------------------------------+
    | convert(0xE5BE88E5B18C using utf8) |
    +------------------------------------+
    | 很屌                               |
    +------------------------------------+
    1 row in set (0.00 sec)


    2.
    SQL> select convert('寰堝睂','AL32UTF8') from dual;
     
    CONVERT('寰堝睂','AL32UTF8'
    ------------------------------
    寰堝睂
    SQL> select convert('寰堝睂','ZHS16GBK') from dual;
     
    CONVERT('寰堝睂','ZHS16GBK'
    ------------------------------
    很屌
    SQL> select convert('很屌','AL32UTF8') from dual;
     
    CONVERT('很屌','AL32UTF8')
    ----------------------------
    很屌
    SQL> select  nlssort('寰堝睂') from dual;
     
    NLSSORT('寰堝睂')
    --------------------
    E5AFB0E5A09DE79D8200
    SQL> select  nlssort('很屌') from dual;
     
    NLSSORT('很屌')
    -----------------
    E5BE88E5B18C00

    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30393770/viewspace-1869124/,如需转载,请注明出处,否则将追究法律责任。

    转载于:http://blog.itpub.net/30393770/viewspace-1869124/

    展开全文
  • Oracle 转换函数

    2020-04-06 15:36:27
    1、字符串语言字符集转换:convert(str,set1,set2) str:要转换的字符串。 set1:要转换为set1字符集。 set2:可选的,从set2字符集转换 2、数字或日期转化为字符串:to_char() to_char('要转换字符串','格式') ...

    1、字符串语言字符集转换:convert(str,set1,set2)

    str:要转换的字符串。
    set1:要转换为set1字符集。
    set2:可选的,从set2字符集转换

    2、数字或日期转化为字符串:to_char()

    to_char('要转换字符串','格式')

    数字转字符串,不定义格式:

    日期转成 年月日时分秒格式字符串('yyyy-mm-dd hh24:mi:ss')

    3、字符串转日期函数:to_date()

    示例:

    4、字符串转数字函数:to_number()

    示例:

    5、字符集名称转ID:nls_charset_id()

    select nls_charset_id('zhs16gbk') from dual;

    6、ID转字符集名称:nls_charset_name()

    select nls_charset_name(852) from dual;

    展开全文
  • Oracle函数——转换函数

    万次阅读 2018-05-21 18:56:02
    1、to_char()函数:将DATE或者NUMBER转换为字符串2、to_date()函数:将number、char转换为date3、to_number()函数:将char转换为number4、CAST(expr AS type_name)函数:用于将一个内置数据类型或集合类型转变为另一...
  • ORACLE SQL函数转换格式

    2019-04-17 21:05:04
    日期格式的转换可以分为多种,可以进行各式各样的转换,但是现在比较常用到的有几种,列如是使用to_char进行的格式转换,这种转换可以函数对数字的转换,而且可以包含任何有效的日期方式,日期之间还能选择利用逗号...
  • 一、数据类型的隐式转换规则: 字符串可以转化为数字和日期。数字要合法,日期要格式匹配。 下面两句执行结果一样: BYS@bys1>select ename,empno from emp where empno='7788'; BYS@bys1>select ename,empno ...
  • 单行函数2.1说明2.2字符函数2.2.1大小写控制函数2.2.2字符控制函数2.3数字函数2.4日期2.4.1日期的数学运算2.4.2日期函数2.5转换函数2.5.1TO_CHAR函数对日期的转换2.5.1.1日期格式的元素2.5.1.2时间格式的元素2.5.2TO...
  • 用CONVERT(char, dest_char_set [,source_char_set] )函数   使用convert 函数 SQL code &lt;!-- Code highlighting produced by Actipro CodeHighlighter (freeware) --&gt;SQL&gt; ...
  • oracle函数 oracle时间函数

    千次阅读 2010-06-08 08:17:00
    oracle函数 关键字: oracle函数 oracle时间函数 相信很多人都有过统计某些数据的经历,比如,要统计财务的情况,可能要按每年,每季度,每月,甚至每个星期来分别统计。那在oracle中应该怎么来写sql语句呢,这...
  • 问题来源 最近需要统计Devops所有开发人员提交的代码列表,还需要知道代码关联的业务,并且需要每天统计发送邮件。但遇到了问题 Devops用的数据库是MySQL,字符集编码是utf8 ...Oracle 11G函数整理(转换函数) ht...
  • Oracle11g 字符编码转换

    千次阅读 2016-01-21 10:38:38
    自己在本地搭数据库,插入数据时,发现长度超出指定的了,上网查了下,原来是Oracle字符集为AL32UTF8 从网上摘录:修改字符集AL32UTF8->ZHS16GBK --查询字符编码 select userenv('language') nls_lang from dual...
  • Oracle所有分析函数

    万次阅读 多人点赞 2016-04-05 17:20:29
    Oracle分析函数   Oracle分析函数——函数列表   SUM :该函数计算组中表达式的累积和 MIN :在一个组中的数据窗口中查找表达式的最小值 MAX :在一个组中的数据窗口中查找表达式的最大值 AVG :用于...
  • 通过命令窗口方式把oracle编码格式从utf-8转换为GBK,并且两者之间相互转换 以下是我的完整执行流程步骤 E:\work\develop\oracle11g_11_2_0\product\11.2.0\dbhome_1\BIN>sqlplus /nolog SQL*Plus: Release ...
  • Oracle函数

    万次阅读 2015-11-22 16:55:30
    Oracle函数 函数的分类: 单行函数:对每行输入值进行计算,得到相应的计算结果,返回给用户,也就是说,每行作为一个输入参数,经过函数计算得到每行的计算结果。比如length 多行函数:对多行输入值进行计算,...
  • oracle 提供一个reverse函数,可以实现将一个对象反向转换.比如:SQL> select reverse('123456') from dual;REVERSE('123456')-----------------654321由于这个函数,是针对数据库内部存储的对象编码进行反转的,因此...
  • oracle编码

    千次阅读 2011-03-17 15:43:00
    转载于:http://conjee.javaeye.com/blog/186278oracle编码(转)Oracle数据库字符集问题解析经常看到一些朋友问ORACLE字符集方面的问题,我想以迭代的方式来介绍一下。第一次迭代:掌握字符集方面的基本概念。 有些...
  • Oracle的10进制和16进制转换函数

    千次阅读 2013-03-01 15:31:42
    有两个使用PL/SQL开发的函数,可以方便使用。 create or replace function f_dec2hex(p_int in varchar2) return varchar2 is  ------------------------------------------------------
  • Oracle系统函数和select语句
  • oracle reverse 反转函数

    2010-05-17 22:17:29
    oracle 提供一个reverse函数,可以实现将一个对象反向转换. 比如: SQL> select reverse('123456') from dual; REVERSE('123456') ----------------- 654321 由于这个函数,是针对数据库内部存储的对象...
  • oracle sql函数

    千次阅读 2009-09-04 12:27:00
    ORACLE常用SQL函数2007-06-14 15:561.ASCII 返回与指定的字符对应的十进制数;SQL> select ascii(A) A,ascii(a) a,ascii(0) zero,ascii( ) space from dual;2.CHR 给出整数,返回对应的字符;SQL> select chr(54740) ...
  • Oracle常用函数总结

    千次阅读 2018-04-30 16:48:03
    Oracle常用函数 今天主要总结一下oracle在查询时常用到相关的函数,使用一定的函数可以大大节省我们的工作时间,尽快的查询统计到我们想要的结果,废话不多说,下面开始介绍总结的内容和使用方法。 首先讲一下sql...
  • oracle function函数

    千次阅读 2019-06-05 18:46:37
    上图所示 为upper(‘abcdf’) 函数,其作用为将小写的字母转换为大写; 2、自定义函数: 想想如何将字符串:‘abcdf’ 的首字母改为大写,其余为小写呢?于是我们自己定义一个函数将其实现: ...
  • 这种转换一般用于网页地址; 我不知道 Delphi 是不是有现成的函数, 用到了就写了一个. //函数: function ToUTF8Encode(str: string): string; var b: Byte; begin for b in BytesOf(UTF8Encode(str)) do ...
  • Oracle编码与字符转换

    千次阅读 2014-08-09 23:30:15
    一、ASCII码与字符相互转换
  • oracle 隐式转换

    千次阅读 2016-10-13 11:03:43
    Oracle中对不同类型的处理具有显式类型转换(Explicit)和隐式类型转换(Implicit)两种方式,对于显式类型转换,我们是可控的,但是对于隐式类型转换,当然不建议使用, 因为很难控制,有不少缺点,但是我们很难避免
  • Oracle 单行函数

    2013-11-16 11:03:19
    转换大小写函数: select upper('aAbcjdJsadf') from dual; --大写 select lower('AAADDAERAYRARE') from dual; --小写 单词首字母大写函数(所有单词,以空格区分单词): select initcap(concat('today is',' ...
  • oracle 分析函数

    万次阅读 2011-11-04 22:27:47
    Oracle开发专题之:分析函数(OVER) 1 Oracle开发专题之:分析函数2(Rank,Dense_rank, row_number) 6 Oracle开发专题之:分析函数3(Top/BottomN、First/Last、NTile) 10 Oracle开发专题之:窗口函数... 14 Oracle...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 32,483
精华内容 12,993
关键字:

oracle编码转换函数