将返回的char从子字符串转换为二进制

时间:2016-01-06 11:05:05

标签: sql sql-server-2008 binary binary-search

我写了以下查询:

substring(SELECT DB_NAME()), 1, 1)

我希望将此查询返回的char转换为二进制字符串,如“11001101”。

这样做的正确方法是什么?

由于

1 个答案:

答案 0 :(得分:1)

您可以使用ASCII()将字符转换为十进制整数,然后使用this answer上给出的脚本将其转换为"二进制"串

您最终可能会遇到这样的事情:

DECLARE @i INT = ASCII(SUBSTRING((DB_NAME()),1,1)) SELECT CASE WHEN CONVERT(VARCHAR(8), @i & 128 ) > 0 THEN '1' ELSE '0' END + CASE WHEN CONVERT(VARCHAR(8), @i & 64 ) > 0 THEN '1' ELSE '0' END + CASE WHEN CONVERT(VARCHAR(8), @i & 32 ) > 0 THEN '1' ELSE '0' END + CASE WHEN CONVERT(VARCHAR(8), @i & 16 ) > 0 THEN '1' ELSE '0' END + CASE WHEN CONVERT(VARCHAR(8), @i & 8 ) > 0 THEN '1' ELSE '0' END + CASE WHEN CONVERT(VARCHAR(8), @i & 4 ) > 0 THEN '1' ELSE '0' END + CASE WHEN CONVERT(VARCHAR(8), @i & 2 ) > 0 THEN '1' ELSE '0' END + CASE WHEN CONVERT(VARCHAR(8), @i & 1 ) > 0 THEN '1' ELSE '0' END