Convert Byte Array to string using TransactSQL
我们使用C和BinaryFormatter将字符串值存储在使用varbinary类型的数据库中。我们转换为字节数组,然后保存到数据库
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
好的,如果我们保存字符"A",我们可以在数据库中看到"0x0001000000000FFFF010000000000000000006010000000110B"。在我们可以检索数据并再次转换为字符串之后。
我们是否可以仅使用Transact-SQL将此二进制值("0x0001000000000ffffffff010000000000000000006010000000110b")转换为char("a")(以便我们可以从SQL Server控制台进行修改、插入和比较)?
谢谢。
我建议使用http://msdn.microsoft.com/en-us/magazine/cc163473.aspx描述的方法来使用.NET regex库。特别是clr用户定义函数的部分。您可以简单地使用BinaryFormatter反序列化字节数组。
1 2 3 4 5 6 7 8 9 |
你可以用一些简单的东西,比如
1 | Encoding.Default.GetBytes("a"); |
它将返回"61",并且可以更容易地转换为varchar,只需运行以下命令:
1 2 3 | create table #sample (content varbinary(max)); insert into #sample values (0x61) select cast(content as varchar) from #sample |
号
为什么不能将原始字符串存储在
1 2 3 4 5 | public static byte[] ToBytes(string value) { if (value == null) return null; return System.Text.Encoding.Unicode.GetBytes(value); } |
然后像这样使用:
1 | select cast(VarBinaryField as nvarchar(max)) from SomeTable |
。