我创建了以下简单查询:
substring(SELECT DB_NAME(), 1, 1)
我希望以二进制字符串(如11001011)接收结果。
意思是,将选定的“char”作为二进制文件。
这样做的正确方法是什么?
答案 0 :(得分:0)
如果要转换字符串,可以尝试下一个SQL查询
SELECT CAST(DB_NAME() AS VARBINARY(MAX)) as db_binary_name
我编写了小型T-SQL函数将varchar值转换为字符串二进制值。希望,这将是有用的。
CREATE FUNCTION StrToBin
(
@str VARCHAR(MAX)
)
RETURNS VARCHAR(MAX)
AS
BEGIN
DECLARE @binary_value VARBINARY(MAX),
@output_str NVARCHAR(MAX),
@temp_str NVARCHAR(MAX),
@part_binary_value VARBINARY(1),
@start_pos BIGINT
SET @binary_value = CAST(@str AS VARBINARY(MAX))
SET @start_pos = 1
WHILE @start_pos <= LEN(@binary_value)
BEGIN
SET @temp_str = NULL
SET @part_binary_value = NULL
SET @part_binary_value = SUBSTRING(@binary_value, @start_pos, 1)
WHILE @part_binary_value NOT IN(0,1)
BEGIN
SET @temp_str = ISNULL(@temp_str, '') + CAST(@part_binary_value % 2 AS VARCHAR(1))
SET @part_binary_value = @part_binary_value / 2
IF @part_binary_value = 1
SET @temp_str = @temp_str + '1'
END
IF @temp_str IS NULL
SET @temp_str = '0'
ELSE
SET @temp_str = REVERSE(@temp_str)
-- padding
IF LEN(@temp_str) < 8
SET @temp_str = REPLICATE('0', 8 - LEN(@temp_str)) + @temp_str
SET @output_str = ISNULL(@output_str, '') + @temp_str
SET @start_pos = @start_pos + 1
END
RETURN @output_str
END
GO
例如
SELECT dbo.StrToBin(DB_Name()) as col_name
答案 1 :(得分:0)
您可以使用强制转换或转换
SELECT CAST(DB_NAME() AS VARBINARY)
SELECT CONVERT(VARBINARY,DB_NAME())