我有两个名为 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
答案 0 :(得分:0)
在case expression
中,您将针对一种情况返回nvarchar
THEN CONVERT(nvarchar, CONVERT(int, Value, 1))
和第二种情况的整数
ELSE DataTypeID
您需要更正您的连接,以便它始终返回和int以使连接起作用。