小编典典

在SQL中,如何将位掩码总计中的值拆分为逗号分隔的字符串

sql

我有一个位掩码值存储为int在sql中。我想将该值转换为位掩码值中包含的值的逗号分隔列表。

因此,例如,结果可能如下所示:

id  name      bitMaskValue   values
----------------------------------------
1   Bob       5              1,4
2   Mary      13             1,4,8
3   Stan      11             1,2,8

有没有一种方法可以在sql语句中完成此操作?

这是SQL Server 2008。


阅读 184

收藏
2021-03-23

共1个答案

小编典典

declare @I integer = 2117

Declare @v varChar(32) = ''
Declare @Bit tinyInt = 0
while @I > 0 Begin
Set @v += case @I %2 WHen 1 Then str(@bit,2,1) + ',' else '' End 
Set @Bit += 1
Set @i /= 2
End
Select case  When len(@v) > 0 Then left(@v, len(@v) -1) else '' End
2021-03-23