sql強制類型轉換
❶ 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 數據隱性地轉換到其它數據類型的對象
❷ SQL SERVER中強制類型轉換cast和convert的區別
SQL中cast
和convert都是用來將一種數據類型的表達式轉換為另一種數據類型的表達式。CAST
和
CONVERT
提供相似的功能,只是語法不同。
在時間類型轉化中一般用到convert,因為它比cast多加了一個style,可以轉化成不同時間的格式。
一、使用語法:
1、CAST
(
expression
AS
data_type
)
2、CONVERT
(data_type[(length)],
expression
[,
style])
參數說明:
expression:是任何有效的表達式。
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
數據類型)。
二、腳本示例
select CAST('1234' as int) -- 1234
select CONVERT(int, '1234') -- 1234
select CAST(123.4 as int) -- 123
select CONVERT(int, 123.4) -- 123
select CAST('123.4' as decimal) -- 123
select CONVERT(decimal, '123.4') -- 123
select CAST('123.4' as decimal(9,2)) -- 123.40
select CONVERT(decimal(9,2), '123.4') -- 123.40
declare @Num moneyset @Num = 1234.56
select CONVERT(varchar(20), @Num, 0) -- 1234.56
select CONVERT(varchar(20), @Num, 1) -- 1,234.56
select CONVERT(varchar(20), @Num, 2) -- 1234.5600
CONVERT(VARCHAR(19),GETDATE()) --Dec 29 2016 11:45 PM
CONVERT(VARCHAR(10),GETDATE(),110) --12-29-2016
CONVERT(VARCHAR(11),GETDATE(),106) --29 Dec 16
CONVERT(VARCHAR(24),GETDATE(),113) --29 Dec 2016 16:25:46.635三、convert函數的style參數說明
1、時間style
2、float
和
real
樣式
3、money
和
smallmoney
樣式
❸ 在sql裡面String轉int(相互)~~~~要詳細描述
用convert方法:
欄位Aint
欄位Bvarchar(10)
則convert(varchar(10),欄位A)將返回A的varchar類型
同理convert(int,欄位B)將返回B的int型
Example:
//stoiexample
#include<iostream>//std::cout
#include<string>//std::string,std::stoi
(此處空一行)
intmain()
{
std::stringstr_dec="2001,ASpaceOdyssey";
std::stringstr_hex="40c3";
std::stringstr_bin="-10010110001";
std::stringstr_auto="0x7f";
(此處空一行)
std::string::size_typesz;//aliasofsize_t
inti_dec=std::stoi(str_dec,&sz);
inti_hex=std::stoi(str_hex,nullptr,16);
inti_bin=std::stoi(str_bin,nullptr,2);
inti_auto=std::stoi(str_auto,nullptr,0);
(此處空一行)
std::cout<<str_dec<<":"<<i_dec<<"and["<<str_dec.substr(sz)<<"] ";
std::cout<<str_hex<<":"<<i_hex<<' ';
std::cout<<str_bin<<":"<<i_bin<<' ';
std::cout<<str_auto<<":"<<i_auto<<' ';
(此處空一行)
return0;
}
(3)sql強制類型轉換擴展閱讀:
幾種轉換成int類型的方式總結
1、(int)變數名[強制類型轉換]:
這種方式主要用於數字類型之間的轉換,從int類型到long,float,double,decimal類型,可以使用隱式轉換,但是從long類型到int類型就需要使用顯式轉換,也就是該數據類型轉換方式,否則會產生編譯錯誤。
2、int.Parse(string類型變數名)
這種方式是將數字內容的字元串轉為int類型,如果字元串內容為空或者null時,如果字元串內容不是數字,如果字元串內容所表示數字超出int類型可表示的范圍,都拋出異常。
使用該方法切忌的一點就是只能處理字元串內容,而且字元串內容只能在int類型可表示的范圍之內。
❹ SQL Server 對欄位強制轉換類型
這個欄位應該設置成nvarchar,
存的時候用N『aa』
這樣,
輸出的時候就不需要任何操作了。
但是如果本身不是unicode
類型的欄位,
那麼存儲的時候已經亂碼了,
查詢的時候是變不回來的。
❺ 請教sql語句的中數據類型的強制轉換問題
首先char類型的必須是數字 convert(int,[char類型的欄位名])