数据库中转换数据类型的几种方法

数据库中转换数据类型的几种方法,第1张

oracle有三种最基本的数据类型,即字符型、数值型、日期型。 (注意需要起别名的地方要起别名)

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

sql.append(" select CURVE_NAME,S_YEAR_LIMIT,AVERAGE_VALUE,to_char(d_date,'yyyy-MM-dd') d_date from t_treasury_yield_curve t where d_date = to_date ('"+d_date+"','yyyy-MM-dd')")

24 小时的形式显示出来要用 HH24select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from dual

select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mi:ss') from dualto_date() function。

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

D 一周中的星期几。

DAY 天的名字,使用空格填充到 9 个字符。DD 月中的第几天,DDD 年中的第几天。

DY 天的简写名,IW ISO 标准的年中的第几周,IYYY ISO 标准的四位年份。YYYY 四位年份,

YYY,YY,Y 年份的最后三位,两位,一位。

select sysdate,sysdate - interval '7' month from dual。

当前时间减去 7 年的时间。

select sysdate,sysdate - interval '7' year from dual。

时间间隔乘以一个数字。

select sysdate,sysdate - 8 *interval '2' hour from dual

2、日期到字符 *** 作

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。

3、字符到日期 *** 作

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

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

4、TO_NUMBER 

使用TO_NUMBER函数将字符转换为数字

TO_NUMBER(char[, '格式'])

数字格式格式:

9 代表一个数字 。

0 强制显示0 。

$ 放置一个$符 。

L 放置一个浮动本地货币符 。

. 显示小数点 。

, 显示千位指示符。

扩展资料:

在使用数据类型转换之前,同样的 SQL 在有的服务器不报错,主要是数据库的版本不同,当然该过配置的不算。

常见的两种类型转换错误如下:

ERROR: operator does not exist: integer = character varying。

ERROR: operator does not exist: character varying = integer。

字符串转数字,数字转字符串。这一点支持的不如 MySQL 好,当然 PostgreSQL 在新版本中也对这个问题做了改进!

第一种转换方式:使用 CAST 函数。

SELECT * FROM xttblog WHERE id = CAST(888 AS VARCHAR)

SELECT * FROM xttblog WHERE id = CAST('888' AS integer)。

第二种转换方式:使用“::” *** 作字段。

格式,字段 :: 要转换为的数据类型。

SELECT * FROM xttblog WHERE id = 888 :: VARCHAR

SELECT * FROM xttblog WHERE id = '888' :: integer。

数据类型转换,虽然看起来很痛苦,但是如果用户的类型用的不对,查询效率会下降。所以,在设计的时候,字段的类型,一定要设计的合理,尤其是在关联表的时候。

(1) 隐式转换:一般是低类型向高类型转化,能够保证值不发生变化。 隐式数值C#数据类型转换: 从sbyte 到 short、int、long、float、double 或 decimal。 从byte 到 short、ushort、int、uint、long、ulong、float double 或 decimal。 从short 到 int、long、float、double 或 decimal。 从ushort 到 int、uint、long、ulong、float、double 或 decimal。 从int 到 long、float、double 或 decimal。 从uint 到 long、ulong、float、double 或 decimal。 从long 到 float、double 或 decimal。 从ulong 到 float、double 或 decimal。 从float 到 double。 不存在向 char 类型的隐式转换,因此其它整型的值不会自动转换为 char 类型。 浮点型不能隐式地转化为decimal型 隐式枚举转换 隐式枚举转换允许将十进制整数 0 转换为任何枚举类型。 隐式引用转换 派生类向基类转换 隐式引用转换是指一类引用类型之间的转换,这种转换总是可以成功,因此不需要在运行时进行任何检查。 装箱转换 装箱转换允许将值类型隐式转换为引用类型。 (2) 显示转换:也称强制类型转换。不能保证数据的正确性。 (type)(表达式) (3) 用户自定义C#数据类型转换 所有的用户自定义转换都是静态的,要使用static关键字 用户自定义转换分显示和隐示,它们用implicit(隐式转换)或 explicit(显示转换)关键字声明。 static 访问修辞符 转换修辞符 operator 转换类型(参数) C#数据类型转换示例:using Systemstruct Number { private int valuepublic Number(int value) { this.value=value} //用户自定义整型到Number型的隐式转换 static public implicit operator Number(int value) { return new Number(value)} //用户自定义从Number型到整型的显示转换 static public explicit operator int(Number n) { returnn.value} //用户自定义从Number类型到string类型的隐式转换 static public implicit operator string(Number n) { returnn.ToString()} } class Test { static public void Main() { Number nn=10Console.WriteLine((int)n)//隐式转换到string Console.WriteLine(n)} } 使用System.Convert类 将一个基本数据类型转换为另一个基本数据类型。 使用Parse方法 大部份预定义值类型都有这个静态方法,用来将相应的文本转化为相应的值类型。装箱和取消装箱 装箱和取消装箱使值类型能够与 object 类型相互转换。 装箱转换允许将“值类型”隐式转换为“引用类型”。将“值类型”的值装箱的 *** 作包括:分配一个对象实例并将“值类型”的值复制到该实例中。 C#数据类型转换示例: 此例将整数变量 i 通过装箱转换为对象 o。此例显示对象保留了内容的原始副本,即 123。using Systemclass TestBoxing { public static void Main() { int i=123object o=i//隐式的装箱 i=456//改变变量i的值 Console.WriteLine("Thevalue-typevalue={0}",i)//456 Console.WriteLine("Theobject-typevalue={0}",o)//123是i的复制值 } } 取消装箱转换:取消装箱转换允许将引用类型显式转换为值类型。 取消装箱 *** 作包括以下两个步骤:首先检查该对象实例是否是某个给定的值类型的装了箱的值,然后将值从实例中复制出来。 C#数据类型转换示例: 下面的示例阐释无效取消装箱的情况,即错误的取消装箱如何导致 InvalidCastException。通过使用 try 和 catch,发生错误时会显示错误信息。 usingSystempublic class UnboxingTest { public static void Main() { int intI=123object o=intI//装箱 try { //取消装箱无效,short不是装了箱的值类型.检查该对象实例是否是某个给定的值类型的装了箱的值int intJ=(short)oConsole.WriteLine("UnboxingOK.")} catch(InvalidCastException e) { Console.WriteLine("{0}Error:Incorrectunboxing.",e)} } } 其它转换用运算符 as as 运算符用于执行引用类型的显式类型转换。 如果要转换的类型与指定类型兼容,转换就会成功;如果类型不兼容,则返回null。 表达式as 类型 as 运算符类似于类型转换,所不同的是,当转换失败时,as 运算符将返回null,而不是引发异常。 示例: object o1=”SomeString”object o2=5string s1=o1asstring//类型兼容s1=”SomeString” string s2=o2asstring//s2=null is is 运算符用于检查对象的类型是否与给定类型兼容(对象是该类型,或是派生于该类型)。 表达式 is 类型 示例: int i=10if(iisobject)//true {} sizeof sizeof 运算符用于获得值类型的大小(以字节为单位)。 sizeof(type) sizeof 运算符仅适用于值类型,而不适用于引用类型。 sizeof 运算符仅可用于 unsafe 模式。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10803239.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-11
下一篇 2023-05-11

发表评论

登录后才能评论

评论列表(0条)

保存