我的数据库中有两个不同的表,我正在加入它们以提取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来获取提取的数据。 问题是如何避免这种行为?
答案 0 :(得分:0)
在分析检索到的数据后,我看到Sql Server正在自动将varchar数据转换为使用UTF-16LE编码的varbinary。为了用java代码来编织它,我只需要实现一个传递编码的String,如下所示:
new String(retrievedByteArray, Charset.forName("UTF-16LE"))