您的位置:

Oracle日期类型转换成字符串

一、从oraclelong转字符串

OracleLong字段是为了保存长度大于2000字节的字符而设立的一种数据类型。在数据库表中存储的时候,OracleLong类型的字符是作为单独的数据记录存储的,而不是和其他字段一起存储。因此在查询OracleLong字段的时候,需要用一些特殊的方法来将它转换成字符串。

考虑下面这个行数据表,其中ORACLE_LONG字段是OracleLong类型:

CREATE TABLE EXAMPLE_TABLE (
  ID     NUMBER(10),
  NAME   VARCHAR2(200),
  OS     VARCHAR2(100),
  ORACLE_LONG   LONG
);

以下是将OracleLong类型字段转换成字符串的代码:

ResultSet rs = stmt.executeQuery("SELECT ORACLE_LONG FROM EXAMPLE_TABLE WHERE ID = 1");
String longString = "";
if(rs.next()) {
    Clob clob = rs.getClob(1);
    Reader reader = clob.getCharacterStream();
    char[] buffer = new char[1024];
    int len = 0;
    while((len = reader.read(buffer)) != -1){
        longString += new String(buffer,0,len);
    }
    reader.close();
    clob.free();
}

首先查询数据表中的ORACLE_LONG字段,使用getClob方法将Clob类型转换成Reader类型,设置buffer读取长度,遍历输出内容,最后将Reader和Clob资源释放。

二、Oracle转换字符串函数

在Oracle数据库中,提供了许多将日期类型转换为字符串的函数,例如TO_CHAR函数:SELECT TO_CHAR(SYSDATE, 'YYYY/MM/DD') FROM DUAL;

以下是将日期类型转换为字符串的一些常用函数:

  • TO_CHAR(date, 'format') 将日期类型转换为字符串。YMD、YYYY-MM-DD HH24:MI:SS等是日期格式的参数,可以自定义。
  • TO_DATE(string, 'format') 将字符串类型转换为日期类型。‘YYYY-MM-DD HH24:MI:SS’等是日期格式的参数,可以自定义。

以下是示例代码:

PSQL> SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD') FROM DUAL;
2003-01-30

三、Oracle字符串转换为数字

将字符串类型的数字转换为数字类型,可以使用TO_NUMBER函数:

SELECT TO_NUMBER('123.45', '999.99') FROM DUAL;
123.45

四、Oracle中字符串转数字

将字符串类型的数字转换为数字类型,可以使用CAST函数或者CONVERT函数:

SELECT CAST('1234.56' AS NUMBER) FROM DUAL;
SELECT CONVERT(NUMBER,'1234.56') FROM DUAL;

五、Oracle字符串转时间

将时间类型的字符串转换为时间类型,可以使用TO_DATE函数:

SELECT TO_DATE('2003-01-30', 'yyyy-mm-dd') FROM DUAL;
30-JAN-03

六、Oracle字符串分列

在查询数据表的时候,有时候需要将字符串类型的字段进行分列,可以使用REGEXP_SUBSTR函数将指定字符串解析为子字段。

SELECT REGEXP_SUBSTR('My full name is Mr. John Smith', '[^ ]+', 1, 2) as SECOND_WORD FROM DUAL;

输出结果为:

SECOND_WORD
-------------
full

七、Oracle字符串转义

在使用字符串的时候,有时候需要对特殊字符进行转义,否则在查询或者插入数据的时候会出现错误。在Oracle中,可以使用REPLACE函数对转义字符进行替换。

REPLACE(string, ' ', '_')

以上示例代码将所有空格替换为下划线。

八、Oracle字符串连接

在查询数据表的时候,有时候需要将多个字段连接成一个字符串进行查询,可以使用CONCAT函数或者'||'符号进行字符串连接。

SELECT CONCAT(FIRST_NAME, ' ', LAST_NAME) FROM EMPLOYEE;
SELECT FIRST_NAME||' '||LAST_NAME FROM EMPLOYEE;