原文:在论坛中出现的比较难的sql问题:18(字符合并 整数解析星期几)


最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了。

所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路。

整数解析星期几

1 = 星期日 2 = 星期一 4 = 星期二 8 = 星期三 16 = 星期四 32 = 星期五 64 = 星期六,

化为二进制

0000001=星期日 

0000010=星期一 

0000100=星期二 

0001000=星期三 

0010000=星期四 

0100000=星期五 

1000000=星期六

以此类推,0111111就代表 了星期日~星期五

0111111化为十进制为63

那么这个63如何在sqlserver里面解析出代表了 星期日~星期五。

其实,这个数字代表星期几,如果在C语言中,就是一个枚举类型。

下面,是我的方法:


  1. declare @i int
  2. declare @v nvarchar(100)
  3. set @i = 63 --你输入的数字
  4. set @v = ''
  5. SELECT @v = @v+ CASE WHEN @i & v1 <> 0 then ','+v2 else '' end
  6. FROM
  7. (
  8. SELECT 1 v1,'星期日' v2 union all
  9. SELECT 2,'星期一' union all
  10. SELECT 4,'星期二' union all
  11. SELECT 8,'星期三' union all
  12. SELECT 16,'星期四' union all
  13. SELECT 32,'星期五' union all
  14. SELECT 64,'星期六'
  15. )t
  16. select stuff(@v,1,1,'')
  17. /*
  18. 星期日,星期一,星期二,星期三,星期四,星期五
  19. */
  20. set @i= 3
  21. SELECT @v = @v+ CASE WHEN @i & v1 <> 0 then ','+v2 else '' end
  22. FROM
  23. (
  24. SELECT 1 v1,'星期日' v2 union all
  25. SELECT 2,'星期一' union all
  26. SELECT 4,'星期二' union all
  27. SELECT 8,'星期三' union all
  28. SELECT 16,'星期四' union all
  29. SELECT 32,'星期五' union all
  30. SELECT 64,'星期六'
  31. )t
  32. select stuff(@v,1,1,'')
  33. /*
  34. 星期日,星期一
  35. */

发布了416 篇原创文章 · 获赞 135 · 访问量 94万+

在论坛中出现的比较难的sql问题:18(字符合并 整数解析星期几)的更多相关文章

  1. 在论坛中出现的比较难的sql问题:46(日期条件出现的奇怪问题)

    原文:在论坛中出现的比较难的sql问题:46(日期条件出现的奇怪问题) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了. 所以,觉得有 ...

  2. 在论坛中出现的比较难的sql问题:45(用户在线登陆时间的小时、分钟计算问题)

    原文:在论坛中出现的比较难的sql问题:45(用户在线登陆时间的小时.分钟计算问题) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了. ...

  3. 在论坛中出现的比较难的sql问题:44(触发器专题 明细表插入数据时调用主表对应的数据)

    原文:在论坛中出现的比较难的sql问题:44(触发器专题 明细表插入数据时调用主表对应的数据) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决 ...

  4. 在论坛中出现的比较难的sql问题:42(动态行转列 考勤时间动态列)

    原文:在论坛中出现的比较难的sql问题:42(动态行转列 考勤时间动态列) 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路.

  5. 在论坛中出现的比较难的sql问题:41(循环替换 循环替换关键字)

    原文:在论坛中出现的比较难的sql问题:41(循环替换 循环替换关键字) 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路.

  6. 在论坛中出现的比较难的sql问题:40(子查询 销售和历史库存)

    原文:在论坛中出现的比较难的sql问题:40(子查询 销售和历史库存) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了. 所以,觉得有 ...

  7. 在论坛中出现的比较难的sql问题:39(动态行转列 动态日期列问题)

    原文:在论坛中出现的比较难的sql问题:39(动态行转列 动态日期列问题) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了. 所以,觉 ...

  8. 在论坛中出现的比较难的sql问题:38(字符拆分 字符串检索问题)

    原文:在论坛中出现的比较难的sql问题:38(字符拆分 字符串检索问题) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了. 所以,觉得 ...

  9. 在论坛中出现的比较难的sql问题:37(动态行转列 某一行数据转为列名)

    原文:在论坛中出现的比较难的sql问题:37(动态行转列 某一行数据转为列名) 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路.

随机推荐

  1. Leetcode: Capacity To Ship Packages Within D Days

    A conveyor belt has packages that must be shipped from one port to another within D days. The i-th p ...

  2. windows下安装anaconda和tensorflow

    anaconda确实很好用,省去了很多麻烦,现在我个人推荐直接使用anaconda. anaconda的特点:可以存在多个python环境,要使用某一个环境的话,就需要切换到这个环境,安装.卸载包都是 ...

  3. easyUIDataGrid对象返回值

    import java.util.List; /** * easyUIDataGrid对象返回值 * <p>Title: EasyUIResult</p> * <p> ...

  4. Qt编写自定义控件71-圆弧进度条

    一.前言 现在web形式的图表框架非常流行,国产代表就是echart,本人用过几次,三个字屌爆了来形容,非常强大,而且易用性也非常棒,还是开源免费的,使用起来不要太爽,内置的各种图表和仪表盘等非常丰富 ...

  5. MySql存储过程常用的函数

    字符串类 CHARSET(str) //返回字串字符集CONCAT (string2 [,... ]) //连接字串INSTR (string ,substring ) //返回substring首次 ...

  6. locate home of running java application

    1. find the target process id of your java app jps [-lm] in my case: [lenmom@Mi- bin]$ jps -l sun.to ...

  7. C# Web Service 不使用服务引用直接调用方法(转)

    版权声明:本文为博主原创文章,未经博主允许不得转载.          https://blog.csdn.net/u011508145/article/details/79496214 using ...

  8. 【git基础】Permission denied (publickey). fatal: Could not read from remote repository

    运行以下git命令的时候出现错误 git push -u origin master error The authenticity of host 'github.com (13.250.177.22 ...

  9. STM32F405的 ADC参考电压选择问题

    1. STM32F405没有参考电压的输入引脚,那么可能是接的VDDA和VSSA 2. 看下文档的说明

  10. AI - H2O - 第一个示例

    1 - Iris数据集 Iris数据集是常用的机器学习分类实验数据集,特点是数据量很小,可以快速学习. 数据集包含150个数据集,分为3类,每类50个数据,每个数据包含4个属性. Sepal.Leng ...