在SQL Server中转换数据类型

时间:2014-06-16 19:10:26

标签: sql sql-server type-conversion

我需要更改一些数据类型。我尝试使用CAST关键字,但它没有解决问题。有关如何使用CAST语句重写这两行的任何建议吗?

  1. VarChar(100)投射到VarChar(20)时可能会发生数据丢失。
  2. 代码:

    SELECT TOP 1 @variableId = variableId
    FROM @tempTable
    
    1. NVarChar(512)投射到NVarChar时可能会发生数据丢失。
    2. 代码:

      SELECT myVariable
      FROM tableName
      

      我尝试过如下操作,但仍会产生错误:

      CAST((myVariable) as nvarchar)
      

2 个答案:

答案 0 :(得分:2)

CAST用于在数据类型之间进行转换。听起来更像是应该使用LEFT代替:

SELECT TOP 1 @variableId = LEFT(variableId,20)
FROM @tempTable

这不会给你任何警告,因为系统假设你已经知道你将丢失正确的80个字符。

答案 1 :(得分:0)

使用CONVERT代替CAST

CONVERT(nvarchar, myVariable)

是一种有效的语法,还有:

CONVERT(varchar(20), myVariable)

但是要获取字符串的一部分,我们会使用SUBSTRING()LEFT()RIGHT()这样的函数:

  • SUBSTRING( value_expression , start_expression , length_expression )

      

    返回字符,二进制,文本或图像表达式的一部分。

  • LEFT ( character_expression , integer_expression )

      

    返回具有指定字符数的字符串的左侧部分。

  • RIGHT ( character_expression , integer_expression )

      

    返回具有指定字符数的字符串的右侧部分。