将值映射到“即时”文本
Posted
技术标签:
【中文标题】将值映射到“即时”文本【英文标题】:Map values to text "on the fly" 【发布时间】:2014-01-07 22:42:04 【问题描述】:我有下表:
store | dow | turnover
------+-----+-----------
1 | 1 | Eu59.426,00
1 | 2 | Eu33.074,00
1 | 5 | Eu38.855,00
1 | 6 | Eu64.431,00
请告诉我如何将星期几表示为星期日、星期一等,这样我就不必使用此映射创建新表。
【问题讨论】:
【参考方案1】:试试这个:
SELECT store, (CASE dow WHEN 1 THEN 'Sunday'
WHEN 2 THEN 'Monday'
WHEN 3 THEN 'Tuesday'
WHEN 4 THEN 'Wednesday'
WHEN 5 THEN 'Thursday'
WHEN 6 THEN 'Friday'
WHEN 7 THEN 'Saturday'
END), turnover
FROM tableA;
【讨论】:
要扩展此答案,如果您愿意,可以使用 CASE 语句提供您自己的自定义星期几名称。例如:SELECT store, CASE dow WHEN 1 THEN 'Sun' WHEN 2 THEN 'Mon' WHEN 3 THEN 'Tue' ... END, turnover FROM tableA
@Saharsh Shah,不起作用 :( 没有函数匹配给定的名称和参数类型。您可能需要添加显式类型转换。
in DAYNAME(dow)... dow 必须是日期格式,但是这里只提供索引,它将如何返回日期名称?
还有其他方法吗?【参考方案2】:
试试这个:
SELECT store,
CASE dow
WHEN 1 THEN 'Sunday'
WHEN 2 THEN 'Monday'
WHEN 3 THEN 'Tuesday'
WHEN 4 THEN 'Wednesday'
WHEN 5 THEN 'Thursday'
WHEN 6 THEN 'Friday'
WHEN 7 THEN 'Saturday'
END, turnover
FROM <tablename>;
注意:在 mysql 中,我认为没有可以在索引值上返回日期名称的函数,, DAYNAME('date')-- 仅用于获取任何日期的日期名称;
【讨论】:
以上是关于将值映射到“即时”文本的主要内容,如果未能解决你的问题,请参考以下文章