我写了以下查询:
substring(SELECT DB_NAME()), 1, 1)
我希望将此查询返回的char转换为二进制字符串,如“11001101”。
这样做的正确方法是什么?
由于
答案 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