2013-06-12 2 views
0

У меня есть несколько строк в моей базе данных SQLite3, где хранится статус. Нормальный этот статус - одно слово, но в некоторых случаях в этот статус добавлен ссылочный номер.Выберите с условием if в SQLite

Так, например, статус может содержать значения, как:

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

и так далее.

Теперь я хочу отображать различные состояния в разные состояния, потому что для моей цели некоторые из этих состояний имеют одинаковый смысл (например, созданный и определяемый, например).

В Oracle я мог использовать, по крайней мере, для уникальных строк функцию декодирования. Однако как я могу обработать значения с уникальным идентификатором. Есть ли что-то вроде функции decode_like, которую я могу использовать для этого?

Результат должен быть:

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

т.д.

Может ли это даже быть сделано с помощью SQL или я должен осуществить это преобразование в моем Java-код?

ответ

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 
Смежные вопросы