将varchar转换为varbinary SQL Server

时间:2018-04-18 14:04:40

标签: java sql-server spring-data

我的数据库中有两个不同的表,我正在加入它们以提取varbinary或varchar deppending。我使用运算符coalesce在它们之间进行选择,并使用convert运算符将varchar转换为varbinary。 最终的查询是这样的:

select coalesce(t1.varbinary_column, convert(varbinary(max), t2.varchar_column)) form table1 t1 inner join table2 t2....

该查询返回一个字节数组,当转换为java.lang.String时,该数组将每个字符分隔一个额外的空格。 还需要说我使用spring数据来执行此本机查询,并使用ResultSet来获取提取的数据。 问题是如何避免这种行为?

1 个答案:

答案 0 :(得分:0)

在分析检索到的数据后,我看到Sql Server正在自动将varchar数据转换为使用UTF-16LE编码的varbinary。为了用java代码来编织它,我只需要实现一个传递编码的String,如下所示:

new String(retrievedByteArray, Charset.forName("UTF-16LE"))