我有一个名为my_table
的表格,如下所示:
CREATE TABLE my_table
([row_id] [int] IDENTITY(1,1) NOT NULL,
[description] [varchar](50) NOT NULL,
[img1] [image] NOT NULL)
我想要检索给定row_id
的description
和img1
作为Base64字符串。
CREATE PROCEDURE
@row_id int
AS
SELECT
description,
img1 -- Need to change this line
FROM
my_table
WHERE
row_id = @row_id
在网上搜索我发现
SELECT CAST('' AS XML).value('xs:base64Binary(sql:variable("@bin"))','VARCHAR(MAX)')
此处使用了变量@bin
。我如何在我的选取查询中使用此代码并将@bin
替换为img1
?
更新
以下是我现在正在做的
DECLARE @img1 varbinary(max)
SELECT @img1 = img1 FROM my_table WHERE row_id = @row_id
SELECT
description,
CAST('' AS XML).value('xs:base64Binary(sql:variable("@img1"))','VARCHAR(MAX)') AS img1
FROM
my_table
WHERE
row_id = @row_id
这段代码可以工作,但需要两个部分,并且我正在查询相同的表两次。您可能想象得到,这只是一个示例,我有多个需要转换为base64的列。
SELECT CAST('' AS XML).value('xs:base64Binary(sql:column("img1"))','VARCHAR(MAX)')
选择 CAST('' AS XML).value('xs:base64Binary(sql:column("img1"))','VARCHAR(MAX)')
- gotqnXQuery [value()]: SQL 类型“image”不支持 sql:column() 和 sql:variable()。
- Arthur ReyConvert.ToBase64String(...)
) - Damien_The_Unbelieverbyte[]
。我以前从未使用过CLR,请您进一步解释一下吗? - Arthur Rey