Jim*_*nic 8 sql t-sql sql-server-2008
我有一个位掩码值存储为sql中的int.我想将该值转换为逗号分隔的位掩码值中包含的值列表.
因此,例如,结果可能如下所示:
id name bitMaskValue values
----------------------------------------
1 Bob 5 1,4
2 Mary 13 1,4,8
3 Stan 11 1,2,8
Run Code Online (Sandbox Code Playgroud)
有没有办法在sql语句中完成此操作?
这是SQL Server 2008.
这应该工作:
SELECT id, name, bitMaskValue,
SUBSTRING(
CASE WHEN bitMaskValue & 1 = 1 THEN ',1' ELSE '' END
+ CASE WHEN bitMaskValue & 2 = 2 THEN ',2' ELSE '' END
+ CASE WHEN bitMaskValue & 4 = 4 THEN ',4' ELSE '' END
+ CASE WHEN bitMaskValue & 8 = 8 THEN ',8' ELSE '' END
, 2, 64) As [values]
FROM yourTable
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1605 次 |
| 最近记录: |