我的数据库中有一个INT值,实际上存储了一周中选定的几天。
例如,65 = 1000001
这意味着:
1:Sun
0:Mon
0:Tue
0:Wed
0:Thu
0:Fri
1:Sat
那么,我需要使用一个小的临时表:
DayOfWeek:
Sunday
Saturday
所以,读取INT,输出一个天数表。
可以在SQL Server中完成吗?
答案 0 :(得分:4)
; with tbl as
(
select col = 65 union all
select col = 3
)
select *
from tbl t
cross apply
(
select DayOfWeek = 'Sun' where col & 64 = 64 union all
select DayOfWeek = 'Mon' where col & 32 = 32 union all
select DayOfWeek = 'Tue' where col & 16 = 16 union all
select DayOfWeek = 'Wed' where col & 8 = 8 union all
select DayOfWeek = 'Thu' where col & 4 = 4 union all
select DayOfWeek = 'Fri' where col & 2 = 2 union all
select DayOfWeek = 'Sat' where col & 1 = 1
) d
答案 1 :(得分:0)
不要在SQL中解码,使用它们会很痛苦。 如果您已存储该号码,则只需加入以下表格:
Code Pattern
64 Sun
96 Sun-Mon
如果你想要每行
,你可以这样做Code Pattern
64 Sun
96 Sun
96 Mon
甚至更好。
否则您将遇到性能问题。
答案 2 :(得分:0)
在DB和SQL中,如果需要,加入总是比解码更好。
创建一个类似
的表格colname值
太阳| 1
周一| 2
星期二| 4
周三| 8
周四| 16
周五| 32
周六| 64
使用表格加入数据并总结值...