1. VC中取得sql中float型如何不用科学计数法表示
SELECT cast(VALUE as decimal(12,2)) as VALUE FROM SP WHERE WAY
2. SQL中CAST和CONVERT的区别是什么
将某种数据类型的表达式显式转换为另一种数据类型。CAST
和
CONVERT
提供相似的功能。
语法
使用
CAST:
CAST
(
expression
AS
data_type
)
使用
CONVERT:
CONVERT
(data_type[(length)],
expression
[,
style])
参数
expression
是任何有效的
Microsoft
SQL
Server"
表达式。有关更多信息,请参见表达式。
data_type
目标系统所提供的数据类型,包括
bigint
和
sql_variant。不能使用用户定义的数据类型。有关可用的数据类型的更多信息,请参见数据类型。
length
nchar、nvarchar、char、varchar、binary
或
varbinary
数据类型的可选参数。
style
日
期格式样式,借以将
datetime
或
smalldatetime
数据转换为字符数据(nchar、nvarchar、char、varchar、nchar
或
nvarchar
数据类型);或者字符串格式样式,借以将
float、real、money
或
smallmoney
数据转换为字符数据(nchar、nvarchar、char、varchar、nchar
或
nvarchar
数据类型)。
将
某种数据类型的表达式显式转换为另一种数据类型。有关可用的数据类型的更多信息,请参见数据类型。日期格式样式,借以将
datetime
或
smalldatetime
数据转换为字符数据(nchar、nvarchar、char、varchar、nchar
或
nvarchar
数据类型);或者字符串格式样式,借以将
float、real、money
或
smallmoney
数据转换为字符数据(nchar、nvarchar、char、varchar、nchar
或
nvarchar
数据类型)。当转换为字符数据时输出。
隐性转换对于用户是不可见的。
SQL
Server
自动将数据从一种数据类型转换成另一种数据类型。例如,如果一个
smallint
变量和一个
int
变量相比较,这个
smallint
变量在比较前即被隐性转换成
int
变量。
显式转换使用
CAST
或
CONVERT
函数。
CAST
和
CONVERT
函数将数值从一个数据类型(局部变量、列或其它表达式)转换到另一个数据类型。例如,下面的
CAST
函数将数值
$157.27
转换成字符串
''$157.27'':CAST
(
$157.27
AS
VARCHAR(10)
)
CAST
函数基于
SQL-92
标准并且优先于
CONVERT。
当
从一个
SQL
Server
对象的数据类型向另一个转换时,一些隐性和显式数据类型转换是不支持的。例如,nchar
数值根本就不能被转换成
image
数值。nchar
只能显式地转换成
binary,隐性地转换到
binary
是不支持的。nchar
可以显式地或者隐性地转换成
nvarchar。
当处理
sql_variant
数据类型时,SQL
Server
支持将具有其它数据类型的对象隐性转换成
sql_variant
类型。然而,SQL
Server
并不支持从
sql_variant
数据隐性地转换到其它数据类型的对象
3. SQL SERVER 经CAST转换后的结果自动被四舍五入了,怎样才能让它不四舍五入
没必要转换,抽取计算的结果出来是数字,你在用的时候就当做字符型使用就成,没必要还转成字符型吧。
4. SQL语句 统计各个学生的不及格科目数量及不及格率 ,2条语句
--创建表
createtablestudent
(
姓名nvarchar(20),
数学float,
语文float,
英语float,
体育float,
物理float,
化学float
)
go
--插入语句
insertintostudentvalues('枫',50,60,70,50,60,40)
insertintostudentvalues('巅',60,80,50,58,80,90)
go
--查询
select*fromstudent
go
--不及格科目数量
;withtestas
(
(select姓名,'数学'科目,数学成绩fromstudentwhere数学<60)unionall
(select姓名,'语文'科目,语文成绩fromstudentwhere语文<60)unionall
(select姓名,'英语'科目,英语成绩fromstudentwhere英语<60)unionall
(select姓名,'体育'科目,体育成绩fromstudentwhere体育<60)unionall
(select姓名,'物理'科目,物理成绩fromstudentwhere物理<60)unionall
(select姓名,'化学'科目,化学成绩fromstudentwhere化学<60)
)
select姓名,count(姓名)不及格科目数量fromtestgroupby姓名
--不及格率
;withtestas
(
selectdistinct
(selectcount(姓名)fromstudent)a,
(selectcount(姓名)fromstudentwhere数学<60)b,
(selectcount(姓名)fromstudentwhere语文<60)c,
(selectcount(姓名)fromstudentwhere英语<60)d,
(selectcount(姓名)fromstudentwhere体育<60)e,
(selectcount(姓名)fromstudentwhere物理<60)f,
(selectcount(姓名)fromstudentwhere化学<60)g
fromstudent
)
select
convert(nvarchar(20),cast(basfloat)/a*100)+'%'数学不及格率,
convert(nvarchar(20),cast(casfloat)/a*100)+'%'语文不及格率,
convert(nvarchar(20),cast(dasfloat)/a*100)+'%'英语不及格率,
convert(nvarchar(20),cast(easfloat)/a*100)+'%'体育不及格率,
convert(nvarchar(20),cast(fasfloat)/a*100)+'%'物理不及格率,
convert(nvarchar(20),cast(gasfloat)/a*100)+'%'化学不及格率
fromtest
执行结果如图所示
5. db2 sql除法,使用cast as float,明明可以整除,为什么结果总是比结果值小还保留多位小数
因为你指定了是 float 类型, 而 float类型 肯定是有小数的啊。
至于比值小的话,那是因为 浮点数的 存储方式引起的,这个自己看看 计算机原理就知道了。
6. SQL cast 和 convert 的区别是什么
如果SQL
Server程序员想将表达式从一种换为另一种,他可以从SQL
Server
7和2000中自带的两种功能中做出选择。在存储过程或其他情况下,我们常常需要将数据从datetime型转化成varchar型;CONVERT和CAST就可以用于这种情况。
由于SQL
Server提供两种功能,因此应该选择哪种功能或应该在哪种情况下使用该功能就很容易让人困惑了。CONVERT是专对SQL
Server使用的,使日期与时间值,小数之间转换具有更宽的灵活性。
CAST是两种功能中更具ANSI标准的功能,即虽然更具便携性(比如,使用CAST的函数能更容易的被其它数据库软件使用),但功能相对弱一些。不过,当小数转化为数值,并保留原始表达式中的小数数值时,仍然需要使用CAST。因此,我建议首先使用CAST,如果遇到必须使用CONVERT的情况时再使用CONVERT。
CAST和CONVERT还能联合使用,达到特殊的效果。比如,在current
date下生成char变量一般使用以下方法:
SELECT
CONVERT(CHAR(10),
CURRENT_TIMESTAMP,
102)
(102表明使用了ANSI日期模式,即yy.mm.dd型)
然而,如果你希望将这个变量明确生成为datetime或smalldatetime变量,以此在特定的数据库栏中兼容,那么你可以使用以下语句:
SELECT
CAST(CONVERT(CHAR(10),CURRENT_TIMESTAMP,102)
AS
DATETIME
返回值将是
yy.mm.dd
00:00:00(如12:00AM作为时间戳;
7. SQL语句中如何使用cast将varchar类型转换为double类型,转换int是cast(a as int),但as double不对
cast(a as DECIMAL)
8. SQL SERVER中强制类型转换cast和convert的区别
将某种数据类型的表达式显式转换为另一种数据类型。CAST 和 CONVERT 提供相似的功能。 语法
使用 CAST: CAST ( expression AS data_type ) 使用 CONVERT: CONVERT (data_type[(length)], expression [, style]) 参数
expression 是任何有效的 Microsoft SQL Server" 表达式。有关更多信息,请参见表达式。 data_type 目标系统所提供的数据类型,包括 bigint 和 sql_variant。不能使用用户定义的数据类型。有关可用的数据类型的更多信息,请参见数据类型。 length nchar、nvarchar、char、varchar、binary 或 varbinary 数据类型的可选参数。 style 日期格式样式,借以将 datetime 或 smalldatetime 数据转换为字符数据(nchar、nvarchar、char、varchar、nchar 或 nvarchar 数据类型);或者字符串格式样式,借以将 float、real、money 或 smallmoney 数据转换为字符数据(nchar、nvarchar、char、varchar、nchar 或 nvarchar 数据类型)。
将某种数据类型的表达式显式转换为另一种数据类型。有关可用的数据类型的更多信息,请参见数据类型。日期格式样式,借以将 datetime 或 smalldatetime 数据转换为字符数据(nchar、nvarchar、char、varchar、nchar 或 nvarchar 数据类型);或者字符串格式样式,借以将 float、real、money 或 smallmoney 数据转换为字符数据(nchar、nvarchar、char、varchar、nchar 或 nvarchar 数据类型)。当转换为字符数据时输出。
隐性转换对于用户是不可见的。
SQL Server 自动将数据从一种数据类型转换成另一种数据类型。例如,如果一个 smallint 变量和一个 int 变量相比较,这个 smallint 变量在比较前即被隐性转换成 int 变量。 显式转换使用 CAST 或 CONVERT 函数。
CAST 和 CONVERT 函数将数值从一个数据类型(局部变量、列或其它表达式)转换到另一个数据类型。例如,下面的 CAST 函数将数值 $157.27 转换成字符串 ''$157.27'':CAST ( $157.27 AS VARCHAR(10) )
CAST 函数基于 SQL-92 标准并且优先于 CONVERT。 当从一个 SQL Server 对象的数据类型向另一个转换时,一些隐性和显式数据类型转换是不支持的。例如,nchar 数值根本就不能被转换成 image 数值。nchar 只能显式地转换成 binary,隐性地转换到 binary 是不支持的。nchar 可以显式地或者隐性地转换成 nvarchar。 当处理 sql_variant 数据类型时,SQL Server 支持将具有其它数据类型的对象隐性转换成 sql_variant 类型。然而,SQL Server 并不支持从 sql_variant 数据隐性地转换到其它数据类型的对象
9. SQL里,如何将数据类型nvarchar转换成float
先将nvarchar转换成decimal,再转换成float型就行了,例如:
declare @vnum varchar(20)
declare @fnum float
--set @fnum=CONVERT(decimal(18,2),'12.34567')--nvarchar转float
--set @vnum=CONVERT(varchar(20),12.34567)+'%'--float转nvarchar
set @fnum=CAST('12.3452145' AS DECIMAL(20,2))
set @vnum=CAST(12.3452145 AS varchar(20))+'%'
print @fnum--12.35
print @vnum
10. sql server中的怎么把数值型转换为字符串
有两种。
1.转换(int,字段名)
例如:选择convert(int,'3')
选择cast('3'作为int)
一般来说,没有必要将字符串转换为数字类型,如果你需要比较两个字段是相等的,但为字符串类型字段,类型,用“=”来比较这两个值是相等的,SQLSERVER将自动将字符串转换为一个数字,然后比较。
(10)sqlcastfloat扩展阅读:
注意事项:
这两个函数都执行强制转换,但是语法不同。据说有一些不同的转换,但我更习惯于使用转换函数,它更像一个函数的语法一方面,可以指定的格式转换,将时间和价值转换为一个字符串。
对于数据类型的确切值,转换后的字符串是我们存储的值。如:
声明@iintset@i=123456789print'test:'+转换(varchar(20),@i)
输出是:test:123456789
对于具有近似值的数据类型,情况就不那么简单了。
声明@ifloatset@i=123456789print'test:'+转换(varchar(20),@i):test:1.23457e+008