0

我的 SQLite3 数据库中有一些行存储状态。通常,此状态是一个单词,但在某些情况下,此状态会添加一个参考编号。

因此,例如状态可以包含以下值:

Created
Defined
Converted from xxx <- where xxx is the unique reference number
Closed / changed from xxx
...

等等。

现在我想将各种状态映射到不同的状态,因为出于我的目的,其中一些状态具有相同的含义(例如 iE Created 和 Defined)。

在 Oracle 中,至少对于唯一字符串,我可以使用 decode 函数。但是,如何处理具有唯一 ID 的值。有没有类似decode_like我可以使用的功能?

结果应该是:

 Created -> CRT
 Defined -> CRT
 Converted from xxx -> CVT
 Closed / changed from xxx -> CL

等等

这甚至可以用 SQL 来完成,还是我必须在我的 java 代码中实现这种转换?

4

1 回答 1

1

使用CASE 表达式

UPDATE MyTable
SET Status = CASE
             WHEN Status = 'Created' OR Status = 'Defined' THEN 'CRT'
             WHEN Status LIKE 'Converted from %'           THEN 'CVT'
             WHEN Status LIKE 'Closed / changed from %'    THEN 'CL'
                                                           ELSE Status
             END
于 2013-06-12T13:22:42.747 回答