所以我的查询看起来像这样:
SELECT IncidentNumber,
ToiletType,
ToiletDangers,
IncidentDate
FROM Core.LostLawsuits
...返回以下结果:
+----------------+------------+---------------------------+---------------+
| IncidentNumber | ToiletType | ToiletDangers | Incident Date |
+----------------+------------+---------------------------+---------------+
| 2100 | A | Spontaneous Combustion | 2/1/2016 |
+----------------+------------+---------------------------+---------------+
| 2101 | P | Attracts Bear Stampede | 2/1/2016 |
+----------------+------------+---------------------------+---------------+
我想要做的是获取结果,但在输出时更改ToiletType列结果。目前,我正在使用嵌套的REPLACE()
,并想知道是否有更好/不同的方式,同时保持ToiletType
的一列结果:< / p>
SELECT IncidentNumber,
REPLACE(REPLACE(ToiletType, 'A', 'Automatic Standard'), 'P', 'Portable Potty') as ToiletType,
ToiletDangers,
IncidentDate
FROM Core.LostLawsuits
答案 0 :(得分:4)
CASE表达式适用于您的示例:
case ToiletType
when 'A' then 'Automatic Standard'
when 'P' then 'Portable Potty'
end
即
SELECT IncidentNumber,
case ToiletType
when 'A' then 'Automatic Standard'
when 'P' then 'Portable Potty'
end as ToiletType,
ToiletDangers,
IncidentDate
FROM Core.LostLawsuits
或许更好的是加入一个ToiletTypes表?
答案 1 :(得分:3)
在这种情况下,我认为你想要CASE
:
SELECT IncidentNumber,
(CASE ToiletType
WHEN 'A' THEN 'Automatic Standard'
WHEN 'P' THEN 'Portable Potty'
ELSE ToiletType
END) as ToiletType,
ToiletDangers,
IncidentDate
FROM Core.LostLawsuits;
答案 2 :(得分:3)
您也可以尝试decode功能,但我怀疑您是否会有任何性能或可读性改进:
$("#textarea").keyup(function(e){
console.log($('#textarea').val());
});
答案 3 :(得分:2)
仅为了完整性:在Oracle中,还有可以使用的decode
函数,如
select decode(ToiletType, 'A', 'Automatic Standard',
'P', 'Portable Potty',
'Unknown Type '||ToiletType) ...
导致的输入比CASE... WHEN... END
少一点
但我更喜欢CASE
,因为它与ANSI SQL兼容。
答案 4 :(得分:1)
ToiletType应该是查找表的外键。查找表至少包含两列 - 一个ToiletTypeCode和一个ToiletTypeDescription。您需要在现有表和新查找表之间使用外键以确保参照完整性。
一旦到位,查询就变得微不足道了:
SELECT
LL.IncidentNumber,
TT.ToiletTypeDescription AS ToiletType,
LL.ToiletDangers,
LL.IncidentDate
FROM Core.LostLawsuits LL
INNER JOIN Core.ToiletTypes TT ON TT.ToiletTypeCode = LL.ToiletType
这也确保您的LostLawsuits表中仅使用有效的厕所类型。
最后,这意味着如果将来添加一个新的ToiletType,它只会成为ToiletTypes表的单个INSERT
语句,而不是试图搜索你使用了{{1}的所有代码。 }或CASE
语句来获取描述。