Problem:
我需要将一些错误转换为select语句。
Example:
我有一张包含以下信息的表格:
-----------------------
|ID | NAME | ERROR|
|-----------------------|
| 001 | example1 | err1 |
| 002 | example2 | err2 |
| 003 | example3 | err3 |
-----------------------
每个错误都意味着:
err1: Login failed
err2: Failure of the database
err3: Hard drive full
我需要创建一个select语句,返回如下信息:
-----------------------------------------
|ID | NAME | ERROR |
|-----------------------------------------|
| 001 | example1 | Login failed |
| 002 | example2 | Failure of the database|
| 003 | example3 | Hard drive full |
-----------------------------------------
My intent
:我尝试了以下内容:
SELECT *,
CASE
WHEN error=err1 THEN 'Login failed'
WHEN error=err2 THEN 'Failure of the database'
WHEN error=err3 THEN 'Hard drive full'
END
FROM table;
答案 0 :(得分:0)
SELECT table.*,
CASE
WHEN error='err1' THEN 'Login failed'
WHEN error='err2' THEN 'Failure of the database'
WHEN error='err3' THEN 'Hard drive full'
END as NEW_ERROR
FROM table
答案 1 :(得分:0)
解决此类问题的正确方法是不要在查询中硬编码每个错误代码的含义。相反,你应该有一个小表error_codes
,有两列,一列用于错误代码,另一列用于描述。然后将您的基表连接到error_code
列上的这个小表。硬编码会更快,因为它不需要连接,但维护起来会困难得多。特别是如果您需要在一个以上的查询中执行此操作。