将位值 (1) 替换为日期名称 SQL

Posted

技术标签:

【中文标题】将位值 (1) 替换为日期名称 SQL【英文标题】:Replace Bit Values (1) with Day names SQL 【发布时间】:2017-07-17 07:00:07 【问题描述】:

通过以下查询,我从我的数据库中选择天数(位值)到一个用空格分隔的字符串中:

SELECT CONVERT(VARCHAR(20),BPL_MONDAY) + ' ' + 
       CONVERT(VARCHAR(20),BPL_TUESDAY) + ' ' + 
       CONVERT(VARCHAR(20),BPL_WEDNESDAY) + ' ' + 
       CONVERT(VARCHAR(20),BPL_THURSDAY) + ' ' + 
       CONVERT(VARCHAR(20),BPL_FRIDAY) + ' ' + 
       CONVERT(VARCHAR(20),BPL_SATURDAY) + ' ' + 
       CONVERT(VARCHAR(20),BPL_SUNDAY)
FROM BOS_PRICE_LIST

查询结果如下所示:

现在我想用当前日期名称替换 1。一行示例:

当前查询结果: 1 1 1 1 1 0 0

我想要什么:周一周二周三周四周五

感谢您的帮助

问候

【问题讨论】:

相信你可以使用casethis会有所帮助 是的,我已经尝试过使用案例,但我无法得到我想要的结果,所以我寻求帮助。 如果您已经尝试过,最好分享您的尝试和结果,以便为那些愿意帮助您的人节省时间。 【参考方案1】:

使用CASE 声明

SELECT case when BPL_MONDAY = 1 then 'Monday' else  '' end + 
       case when BPL_TUESDAY = 1 then 'Tuesday' else  '' end +
       case when BPL_WEDNESDAY = 1 then 'Wednesday' else  '' end +
       case when BPL_THURSDAY = 1 then 'Thursday' else  '' end +
       case when BPL_FRIDAY = 1 then 'Friday' else  '' end +
       case when BPL_SATURDAY = 1 then 'Saturday' else  '' end +
       case when BPL_SUNDAY = 1 then 'Sunday' else  '' end 
FROM BOS_PRICE_LIST

【讨论】:

以上是关于将位值 (1) 替换为日期名称 SQL的主要内容,如果未能解决你的问题,请参考以下文章

在 SQL 和日期中被问号替换的连字符存储为 NULL

SQL触发器用INSERT上的当前日期替换表中的空值?

sql Oracle SQL:返回当前月份第一天的字符串(如果其他月份为ar,则替换SYSDATE的任何日期字段/值

将 bigint 转换为日期(月份名称)

sql server 中怎么把字符串转化为日期?

尝试将月份编号转换为日期集中的月份名称