【发布时间】:2017-10-10 08:29:09
【问题描述】:
我有两个名为 Entry_Data 和 Data
的表Entry_Data 包含三列:
EntryID DataID DataTypeID
1 50 18
2 49 59
30 28 16
数据有两列:
数据ID 值
50 0x00000000033654
49 可拆卸
28 E:\Test.txt
Value 列是一个 nvarchar 字段。
我在尝试将所有以 0x 开头的 Value 字段转换为 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
【问题讨论】:
-
您收到错误是因为您在
JOIN条件下将 int 值与 nvarchar 进行比较。 -
您能建议一下它的外观吗?
-
您正在尝试使用
Value检查DataID,即 50 到0x00000000033654,这是没有意义的。 -
不幸的是,这就是表格的排列方式,所以我无法加入其他任何事情。你是说我想要达到的目标是不可能的?
-
也许,你可以看到这个问题:stackoverflow.com/questions/703019/…
标签: sql sql-server sql-server-2008-r2 sql-convert