精华内容
下载资源
问答
  • 2020-12-30 11:54:28

    今天在把一些数据导入到SQL Server的时候遇到有个列被导入成float类型,而我实际需要的是varchar类型,所以要进行类型转换,转换时遇到了一点问题,所以写这篇博客记录一下。

    SQL Server中的数值类型分为两种,一种是精确的数值类型,具体的数据类型有:bit、tinyint、smallint、int、bigint、smallmoney、money和decimal,这些数据类型能够精确的表明某以数值;另一种是近似的数值类型,具体就是float和real。浮点数据为近似值,因此,并非数据类型范围内的所有值都能精确地表示。

    有些时候我们需要将这些数值类型转换为字符串类型,用到的转换函数就是cast和convert,这两个函数的作用都是进行类型转换,只不过语法格式不同。据说在转换时还是有一定的区别的,不过我个人更习惯于使用convert函数,应该这个函数一方面更像是个函数的语法,另一方面在做时间和数值转换成字符串时还可以指定转换的格式。

    对于精确数值的数据类型,转换出来的字符串就是我们存储的数值。比如: declare @i int

    set @i=123456789

    print 'test:'+convert(varchar(20),@i)

    输出就是:test:123456789

    而如果对于近似数值的数据类型,那么可就没有那么简单了。

    declare @i float

    set @i=123456789

    print 'test:'+convert(varchar(20),@i)

    输出结果:test:1.23457e+008

    输出的结果是使用科学计数法来表示的,再看看可否通过指定转换样式来指定不使用科学计数法呢?帮助文档中说到float 或 real 转换为字符数据时的 style值:

    0(默认值)最大为 6 位数。根据需要使用科学记数法。

    1始终为 8 位值。始终使用科学记数法。

    2始终为 16 位值。始终使用科学记数法。

    我们的值是123456789,超过了6位数.所以不管是0还是1,2结果都会使用科学计数法来表示。那么要怎么样才能将我们的数据不转换成科学计数法而输出呢?比较简单的办法就是将近似数据转换为精确数据,然后再将精确数据转换成字符串。

    同样以上面的例子为例, 进行两次数据类型的转换如下:

    declare @i float

    set @i=123456789

    print 'test:'+convert(varchar(20),convert(int,@i))

    输出:test:123456789

    如果是有小数,那么我们要转换出小数位的话,可以转换成decimal,转换出的小数位数在定义decimal时指定。比如要输出4位小数,那么转换代码是:

    declare @i float

    set @i=123456789.12

    print 'test:'+convert(varchar(20),convert(decimal(18,4),@i))

    输出:test:123456789.1200

    更多相关内容
  • 今天将Excel中的数据导入到...今天在把一些数据导入到SQL Server的时候遇到有个列被导入成float类型,而我实际需要的是varchar类型,所以要进行类型转换转换时遇到了一点问题,所以写这篇博客记录一下。SQL Se...

    今天将Excel中的数据导入到数据库表A后,某一列被自动定义成了Float数据类型,然而,我们的正式库中的表B的相对应的列是Varchar类型的,所以,就出现了表B中所对应的列数据变成了科学计数法的形式。

    今天在把一些数据导入到SQL Server的时候遇到有个列被导入成float类型,而我实际需要的是varchar类型,所以要进行类型转换,转换时遇到了一点问题,所以写这篇博客记录一下。

    SQL Server中的数值类型分为两种,一种是精确的数值类型,具体的数据类型有:bit、tinyint、smallint、int、bigint、smallmoney、money和decimal,这些数据类型能够精确的表明某以数值;另一种是近似的数值类型,具体就是float和real。浮点数据为近似值,因此,并非数据类型范围内的所有值都能精确地表示。

    有些时候我们需要将这些数值类型转换为字符串类型,用到的转换函数就是cast和convert,这两个函数的作用都是进行类型转换,只不过语法格式不同。据说在转换时还是有一定的区别的,不过我个人更习惯于使用convert函数,应该这个函数一方面更像是个函数的语法,另一方面在做时间和数值转换成字符串时还可以指定转换的格式。

    对于精确数值的数据类型,转换出来的字符串就是我们存储的数值。比如:

    declare @i int

    set @i=123456789

    print 'test:'+convert(varchar(20),@i)输出就是:test:123456789

    而如果对于近似数值的数据类型,那么可就没有那么简单了。

    declare @i float

    set @i=123456789

    print 'test:'+convert(varchar(20),@i)输出结果:test:1.23457e+008

    输出的结果是使用科学计数法来表示的,再看看可否通过指定转换样式来指定不使用科学计数法呢?帮助文档中说到float 或 real 转换为字符数据时的 style值:

    0(默认值)最大为 6 位数。根据需要使用科学记数法。

    1始终为 8 位值。始终使用科学记数法。

    2始终为 16 位值。始终使用科学记数法。

    我们的值是123456789,超过了6位数.所以不管是0还是1,2结果都会使用科学计数法来表示。那么要怎么样才能将我们的数据不转换成科学计数法而输出呢?比较简单的办法就是将近似数据转换为精确数据,然后再将精确数据转换成字符串。

    同样以上面的例子为例, 进行两次数据类型的转换如下:

    declare @i float

    set @i=123456789

    print 'test:'+convert(varchar(20),convert(int,@i))输出:test:123456789如果是有小数,那么我们要转换出小数位的话,可以转换成decimal,转换出的小数位数在定义decimal时指定。比如要输出4位小数,那么转换代码是:

    declare @i float

    set @i=123456789.12

    print 'test:'+convert(varchar(20),convert(decimal(18,4),@i))输出:test:123456789.1200

    由于我们知道数据类型间转换的两种方式有:Cast、Convert,那么他们两者之间的区别是什么呢?

    展开全文
  • ResultSet 接口提供用于从当前行获取列的获取 方法(getBoolean、getLong 等)。可以使用列的索引编号...对于获取方法,JDBC 驱动程序尝试将底层数据转换为在获取方法中指定的 Java 类型,并返回适当的 Java 。JD...

    ResultSet 接口提供用于从当前行获取列值的获取 方法(getBoolean、getLong 等)。可以使用列的索引编号或列的名称获取值。一般情况下,使用列索引较为高效。列从 1 开始编号。为了获得最大的可移植性,应该按从左到右的顺序读取每行中的结果集列,每列只能读取一次。

    对于获取方法,JDBC 驱动程序尝试将底层数据转换为在获取方法中指定的 Java 类型,并返回适当的 Java 值。JDBC 规范有一个表,显示允许的从 SQL 类型到 ResultSet 获取方法所使用的 Java 类型的映射关系。

    SQL Server类型

    JDBC类型 (java.sql.类型)

    Java语言类型

    bigint

    BIGINT

    long

    timestamp

    binary

    BINARY

    byte[]

    bit

    BIT

    Boolean

    charnchar

    CHAR

    String

    decimal

    money

    smallmoney

    DECIMAL

    java.math.BigDecimal

    float

    DOUBLE

    double

    int

    INTEGER

    int

    image

    LONGVARBINARY

    byte[]

    text

    ntext

    LONGVARCHAR

    String

    numeric

    NUMERIC

    java.math.BigDecimal

    real

    REAL

    float

    smallint

    tinyint

    SMALLINT

    short

    datetime

    smalldatetime

    TIMESTAMP

    java.sql.Timestamp

    varbinary

    VARBINARY

    byte[]

    varchar

    nvarchar

    uniqueidentifier

    VARCHAR

    String

    注意:JDBC 驱动程序目前不支持 SQL Server sqlvariant 数据类型。如果使用查询从包含 sqlvariant 数据类型列的表中检索数据,则会发生异常。

    Getter方法转换

    基于 SQL Server 2005 的数据类型,以下图表包含 SQLServerResultSet 类的 get 方法的 JDBC 驱动程序转换图,以及 SQLServerCallableStatement 类的 get 方法支持的转换。

    JDBC 驱动程序的 getter 方法支持三种基本的转换类别:

    Non-Lossy (x) :在 getter 类型等于或小于基础服务器类型的情况下执行转换。例如,对基础服务器的十进制数列调用 getBigDecimal 时,无需进行转换。

    Converted (y) :从数字服务器类型到 Java 语言类型的转换,此时的转换为常规转换,并遵循 Java 语言转换规则。对于这些转换,总是直接截取有效位数(从不四舍五入),而溢出则按目标类型取模处理,以较小者为准。例如,对包含“1.9999”的基础十进制数列调用 getInt 将返回“1”;如果基础十进制数值为“3000000000”,则 int 值将溢出为“-1294967296”。

    Data Dependent (z) :从基础字符类型转换到数字类型时,要求字符类型所包含的值可转换成数字类型。不执行其他转换。如果值对于 getter 类型过大,则该值无效。例如,如果对包含“53”的 varchar(50) 列调用 getInt ,则该值作为 int 返回;但如果基础值为“xyz”或“3000000000”,则发生错误。

    (摘自微软的sqljdbc帮助文档)

    1. ResultSet中对于getDouble,getFloat,getInt方法由于返回的是基本类型数据,所以null变为了0(如果值为 SQL NULL ,则返回值为 0 )。这给我们带来了不少麻烦。为了避免这个问题需要借助ResultSet#wasNull()方法

    2. ResultSet#getDate。以前没注意过这个家伙返回的类型是java.sql.Date,发现数据库字段类型为datetime时返回来的数据只有年月日,用 ResultSet#getTimestamp就没问题,郁闷,到现在还不知道为什么。

    3. 相关资源:

    展开全文
  • sql 数字转换为字符

    万次阅读 2017-10-01 17:21:34
    今天在把一些数据导入到SQL Server的时候遇到有个列被导入成float类型,而我实际需要的是varchar类型,所以要进行类型转换转换时遇到了一点问题,所以写这篇博客记录一下。 SQL Server中的数值类型分为两种,一...

    今天在把一些数据导入到SQL Server的时候遇到有个列被导入成float类型,而我实际需要的是varchar类型,所以要进行类型转换,转换时遇到了一点问题,所以写这篇博客记录一下。

    SQL Server中的数值类型分为两种,一种是精确的数值类型,具体的数据类型有:bit、tinyint、smallint、int、bigint、smallmoney、money和decimal,这些数据类型能够精确的表明某以数值;另一种是近似的数值类型,具体就是float和real。浮点数据为近似值,因此,并非数据类型范围内的所有值都能精确地表示。

    有些时候我们需要将这些数值类型转换为字符串类型,用到的转换函数就是cast和convert,这两个函数的作用都是进行类型转换,只不过语法格式不同。据说在转换时还是有一定的区别的,不过我个人更习惯于使用convert函数,应该这个函数一方面更像是个函数的语法,另一方面在做时间和数值转换成字符串时还可以指定转换的格式。

    对于精确数值的数据类型,转换出来的字符串就是我们存储的数值。比如:

    declare @i int
    set @i=123456789
    print 'test:'+convert(varchar(20),@i)
    输出就是:test:123456789

    而如果对于近似数值的数据类型,那么可就没有那么简单了。

    declare @i float
    set @i=123456789
    print 'test:'+convert(varchar(20),@i)
    输出结果:test:1.23457e+008

    输出的结果是使用科学计数法来表示的,再看看可否通过指定转换样式来指定不使用科学计数法呢?帮助文档中说到float 或 real 转换为字符数据时的 style 值:

    0(默认值)最大为 6 位数。根据需要使用科学记数法。

    始终为 8 位值。始终使用科学记数法。

    始终为 16 位值。始终使用科学记数法。

    我们的值是123456789,超过了6位数.所以不管是0还是1,2结果都会使用科学计数法来表示。那么要怎么样才能将我们的数据不转换成科学计数法而输出呢?比较简单的办法就是将近似数据转换为精确数据,然后再将精确数据转换成字符串。

    同样以上面的例子为例, 进行两次数据类型的转换如下:

    declare @i float
    set @i=123456789
    print 'test:'+convert(varchar(20),convert(int,@i))
    输出:test:123456789
    如果是有小数,那么我们要转换出小数位的话,可以转换成decimal,转换出的小数位数在定义decimal时指定。比如要输出4位小数,那么转换代码是:
    declare @i float
    set @i=123456789.12
    print 'test:'+convert(varchar(20),convert(decimal(18,4),@i))
    输出:test:123456789.1200
    
    
    http://www.cnblogs.com/studyzy/archive/2009/08/27/1555356.html
    
    展开全文
  • 今天在把一些数据导入到SQL Server的时候遇到有个列被导入成float类型,而我实际需要的是varchar类型,所以要进行类型转换转换时遇到了一点问题,所以写这篇博客记录一下。 SQL Server中的数值类型分为两种,一种...
  • 二、这里注重说明一下style的含义:style 是将DATATIME 和SMALLDATETIME 数据转换为字符串时所选用的由SQL Server 系统提供的转换样式编号,不同的样式编号有不同的输出格式;一般在时间类型(datetime,smalldatetime...
  • style的含义:style 是将DATATIME 和SMALLDATETIME 数据转换为字符串时所选用的由SQL Server 系统提供的转换样式编号,不同的样式编号有不同的输出格式;一般在时间类型(datetime,smalldatetime)...
  • Oracle Real Time SQL Monitor

    2021-05-07 05:04:56
    Oracle数据库的实时SQL监控能让你用来监控正在执行SQL语句的性能。缺省情况下,当SQL语句使用 并行执行或当SQL语句的单个操作消耗了5秒的CPU或I/O时间就会自动启动SQL监控。可以使用v $sql_monitor与v$sql_plan_...
  • 这不是我写的,我只是搬运工。...------------------------------------------------------SQL Server 2005版本------------------------------------------------------------ CAST 和 CONVERT (Transa
  • 一、MySQL 及 SQL 注入 SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令 以下实例中,输入的用户名必须字母、数字及下划线的组合,且...
  • I've tried removing str_replace, even having the table as varchar(10) to input the date but even that didnt help me. <p>What can I do to prevent 0000-00-00 and 00:00:17 from being inputted in the ...
  • 利用下列表函数 将数据库表 转换为JSon字符串 /****** Object: UserDefinedFunction [dbo].[parseJSON] Script Date: 07/16/2020 14:40:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ...
  • 本文为SQL Tuning Guide第19章“Influencing the Optimizer”的笔记。
  • SQL查询语言简记

    2021-12-04 13:06:21
    SQL查询语言简记 SQL功能 谓词 数据定义(DDL) CREATE、DROP、ALTER 数据查询(DQL) SELECT 数据操纵(DML) INSERT、UPDATE、DELETE 数据控制(DCL) GRANT、REVOKE、DENY 二、SQL支持的数据类型...
  • 精明的读者会注意到该参数的值为空白。 让我们立即趋向于此。 我们单击“确定”离开该对话框,然后我们回到绘图表面。 Before creating our “Year” parameter, we must create one final dataset that pulls the ...
  • 批量更新mysql更新语句很简单,更新一条数据的某个字段,一般这样写:复制代码代码...如果更新同一字段同一个,mysql也很简单,修改下where即可:复制代码代码如下:UPDATE mytable SET myfield = 'value' WHER...
  • 具体代码如下:package param;import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.sql.Connection;import java.sql.DatabaseMetaData;...import java.sql....
  • 今天在把一些数据导入到SQL Server的时候遇到有个列被导入成float类型,而我实际需要的是varchar类型,所以要进行类型转换转换时遇到了一点问题,所以写这篇博客记录一下。 SQL Server中的数值类型分为两种,一种...
  • 该代码导入必要的库,从SQL Server读取数据,将Education定义分类,然后使用pandas内置函数cat.reorder_categories()对进行重新排序。 然后代码显示该变量的分布和条形图。 为了简洁起见,我没有显示条形图...
  • hana SQL函数

    千次阅读 2020-11-11 16:02:20
    2.6SQL 数据类型和列存储数据类型之间的映射 2.7数据类型转换 本节描述 SAP HANA 数据库中允许的类型转换。 2.7.1 显式类型转换 表达式结果的类型,例如一个字段索引,一个字段函数或者文字可以使用如下函数进行...
  • SQL Server笔记一、数据库基础二、企业管理器三、查询分析器四、SQL Server 数据管理五、数据基本查询六、数据高级查询七、连接查询八、查询的实际应用 一、数据库基础 1、数据库 就是存储数据的地方 2、数据库管理...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,713
精华内容 685
关键字:

sql中将varchar值转换为real