在SQLite中选择if条件

时间:2013-06-12 13:17:33

标签: sql sqlite

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

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

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

等等。

现在我想将各种状态映射到不同的状态,因为为了我的目的,这些状态中的一些具有相同的含义(例如,创建和定义)。

在Oracle中,至少对于唯一字符串,我可以使用解码函数。但是,如何使用唯一ID处理值。是否有类似decode_like函数的东西可用于此?

结果应为:

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

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

1 个答案:

答案 0 :(得分:1)

使用CASE expression

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