是否可以将dayname输出用作列名
目前我正在使用此
SELECT *,
LEFT(thu,5) as open1
FROM ...
WHERE ...
但是我想用动态当前日期(3个字母)替换thu字符串,并仍然将其用作列名。
答案 0 :(得分:0)
简短的回答是否定的,不能做到。 SQL语句中的列引用(如所有标识符)都是静态的。标识符不能替换为在运行时确定的表达式。
更长的答案是,你需要动态生成语句,或根据条件选择一组可能的语句来执行。
第三种方法可以通过引用您想要选择的所有可能的列名称,并根据星期几的条件使该列的返回条件为您提供所需的内容。
这样的事情可以达到同样的结果:
SELECT LEFT(CASE DAYNAME(NOW())
WHEN 'Sunday' THEN t.sun
WHEN 'Monday' THEN t.mon
WHEN 'Tuesday' THEN t.tue
WHEN 'Wednesday' THEN t.wed
WHEN 'Thursday' THEN t.thu
WHEN 'Friday' THEN t.fri
WHEN 'Saturday' THEN t.sat
END,5) AS open1
FROM t
(为了避免因星期几名称的不同设置出现问题,根据语言/地区,我宁愿使用DAYOFWEEK
功能。而且我更有可能重复{{ 1}}函数,即使它被重复,它似乎更容易阅读:
LEFT