转换使Nvarchar失败为INT

时间:2017-10-10 08:29:09

标签: sql sql-server sql-server-2008-r2 sql-convert

我有两个名为 Entry_Data 数据

的表格

Entry_Data 有三列:

EntryID DataID DataTypeID

1 50 18

2 49 59

30 28 16

数据有两列:

DataID

50 0x00000000033654

49可移动

28 E:\ Test.txt

“值”列是一个nvarchar字段。

我尝试将所有以0x开头的值字段转换为int时编写了一个左连接,以便十六进制值可以转换为有意义且可读的值但是我得到错误:

  

转换nvarchar值时转换失败   '0x00000000033654'到数据类型int

SELECT TOP 100
  Entry_Data.DataTypeID AS DataTypeID,
  CAST(Data.Value AS nvarchar(440)) AS Value,
  Data.DataID AS DataID
FROM ActivityLog.Entry_Data
LEFT JOIN ActivityLog.Data
  ON ActivityLog.Entry_Data.DataID =
                                    CASE
                                      WHEN DataTypeID = 18 AND
                                        Value LIKE '%0x%' THEN CONVERT(nvarchar, CONVERT(int, Value, 1))
                                      ELSE DataTypeID
                                    END
WHERE DataTypeID = 18

1 个答案:

答案 0 :(得分:0)

case expression中,您将针对一种情况返回nvarchar

 THEN CONVERT(nvarchar, CONVERT(int, Value, 1))

和第二种情况的整数

ELSE DataTypeID

您需要更正您的连接,以便它始终返回和int以使连接起作用。