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类型的字段名])