【发布时间】:2020-05-19 00:32:13
【问题描述】:
我试图让我的查询使用 where 子句来查找从将特定列转换为 varbinary 和 varchar 的查询返回的信息。我必须转换,因为原始数据是十六进制的。
我的查询:
SELECT ScriptID, RowOrder, cast(cast(ScriptData as varbinary(max)) as varchar(max)) AS Converted_SD
FROM Script_Data
典型的回报是这样的:
--------------------------------------------------------------------------------------------
| ScriptID | RowOrder | Converted_SD |
--------------------------------------------------------------------------------------------
| 5006 | 1 | CVisScript {331 1 76 "\"1007\"" "Call.PeripheralVariable10" 284 "" |
| 5007 | 1 | CVisScript {332 1 76 "\"2007\"" "Call.PeripheralVariable10" 285 "" |
| 5009 | 1 | CVisScript {333 1 76 "\"1037\"" "Call.PeripheralVariable10" 286 "" |
| 5014 | 1 | CVisScript {334 1 76 "\"1407\"" "Call.PeripheralVariable10" 287 "" |
| 5015 | 1 | CVisScript {335 1 76 "\"1068\"" "Call.PeripheralVariable10" 288 "" |
| 5016 | 1 | CVisScript {336 1 76 "\"6578\"" "Call.PeripheralVariable10" 289 "" |
--------------------------------------------------------------------------------------------
我希望能够返回 ScriptID、RowOrder,但只返回 Call.PeripheralVariable10 和前面的四个数字 - Converted_SD 列中没有其他内容。我已经尝试了这么多子查询,但我似乎无法将一个可行的放在一起。所以我设想它看起来像这样:
--------------------------------------------------------
| ScriptID | RowOrder | Converted_SD |
--------------------------------------------------------
| 5006 | 1 | 1007 Call.PeripheralVariable10 |
| 5007 | 1 | 2007 Call.PeripheralVariable10 |
| 5009 | 1 | 1037 Call.PeripheralVariable10 |
| 5014 | 1 | 1407 Call.PeripheralVariable10 |
| 5015 | 1 | 1068 Call.PeripheralVariable10 |
| 5016 | 1 | 6578 Call.PeripheralVariable10 |
--------------------------------------------------------
谢谢
【问题讨论】:
-
道歉...我正在使用 MS SQL Server 2016
标签: sql sql-server subquery varchar varbinary