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