SQLServer数据类型转换方法
在SQL Server的日常功能、存储过程和SQL语句中,经常使用不同数据类型的转换,在sql server中有两种类型的数据转换:一种是显式数据转换,另一种是隐性数据转换。1显式转换
显示转换是将某一数据类型的表达式转换为另一种数据类型的转换。
铸造:铸造(表达data_type)
转换:转换(data_type {(长度)},{ } }表达,风格
参数表达式是任何有效的微软SQL Server的表达。数据类型提供的data_type目标系统不能由用户定义的数据类型。
2隐性转换
隐性转换是不可见的用户,通过SQL Server引擎自动处理。隐性转换自动转换数据从一种数据类型。例如,如果一个对象变量是一个int变量相比,在比较之前SmallInt变量是隐性到int变量。一些隐性和显性的数据类型不支持转换数据类型时从一个SQL Server对象转换到另一个。例如,nchar值不能转换成图像的价值。nchar只能显式转换为二进制,它不支持将其隐性的二进制。数据可以转换为nvarchar明示或隐性。
3隐性转化的风险
隐蔽转换有时非常方便,可以简化SQL脚本,但也会产生潜在的风险。它可能发生在脚本的开始,但它不一定时间后犯错误。这是一个真正的项目的一个例子。在SQL Server 2008中有一个表,从两个不同的数据表中提取数据,这些数据表属于不同的系统,键的类型是不同的,一个是int,一个GUID,这两个第一的思想可以被转换成一个存储字符类型。所以我们建立了一个nvarchar(50)表中的id列作为主键。如下图:
的GUID值尚未开始拉数据是int类型转换过来的数据,所以SQL脚本是正常的,但突然在'4c185367-f004-41fe-8a0a-db4e819b1ff2'into数据类型为int的错误nvarchar值运行失败。如下图:
在脚本中,SQL的执行如下:
选择dbo.演示,id = 305
主键中的数据具有GUID转换的字符类型和int转换的字符串,并且示例数据如下所示:
但是,如果执行下面的SQL,它将正常执行:
选择dbo.演示,ID = 305和混合名称= 'int
选择dbo.演示混合ID = 305和序列号= 2
选择dbo.演示混合ID = 305和序列号= 2
选择dbo.演示,id = '305'and名称= 'int
选择dbo.演示,id = '305
结果如下:
上述错误的结果应该是:
选择dbo.演示,混合ID = 305在执行时,SQL Server将隐藏nvarchar类型为int型,如果没有GUID类型的字符数据转换是正常的,如果有,当隐藏角色GUID到整数的转换,转换失败。
这是本文的全部内容,希望能帮助您对SQL Server数据类型进行转换。