2012-05-07 2 views
2

В прошлом я использовал «декодирование» в Oracle и «iif» в Microsoft в SELECT stmt SQL-запроса.SQLite: что-то вроде Oracle Decode или MS «If»

Я рассматриваю SQLite для проекта, но, насколько я могу судить, условия в SELECT stmt сложны. Googling вызывает использование CASE .. но интуитивно, похоже, что производительность будет не очень хорошей, не говоря уже о более сложном коде. Или, может быть, я не совсем понимаю это.

Мысли или советы от кого-либо? Я бы очень хотел использовать SQLite для этого проекта.

+0

Появляется DUP из: http://stackoverflow.com/questions/6518389/how-can-we-use-decode-functionality-in-sqlite – xQbert

+0

Кроме того, HTTP: //stackoverflow.com/questions/4874285/if-statement-alternative-in-sqlite – dan04

+0

Посмотрите http://stackoverflow.com/questions/6518389/how-can-we-use-decode-functionality-in-sqlite –

ответ

8

Я думаю, что дело так же простое в использовании. Это знакомство с синтаксисом, которое может быть затруднено, но это работает так же хорошо.

CASE Gender WHEN 'F' then 'FEMALE' 
      WHEN 'M' then 'MALE' 
      ELSE 'UNDEFINED' 
      END as GenderName 

или

CASE WHEN GENDER = 'F' THEN 'FEMALE' 
    WHEN GENDER = 'M' THEN 'MALE' 
    ELSE 'UNDEFINED' 
    END as GenderName 
+0

Спасибо. На самом деле, ваше объяснение более ясное, чем другие, которые я прочитал. – Paulb

+0

Считаете ли вы, что это будет работать так же эффективно, как DECODE или IIF .. и я понимаю, что это трудный вопрос для ответа без особых особенностей. Общие положения в порядке. – Paulb

+0

В целом производительность должна быть на уровне Decode и IIF. CASE аналогична IIF и декодируется. «работать как эффективный», и все, что я могу сказать, это попробовать. Есть так много переменных, чтобы учесть, что я не понял бы более надежного ответа. Вы говорите о разных механизмах баз данных, разных компиляторах, разных сборках ... ПРОДОВОЛЬСТВИЕ ДЛЯ МЫСЛИ: При создании картины имеет значение, если молот сделан Стэнли или Ремесленником? просто пока вы не используете ключ обезьяны. Единственный другой вариант, который я знаю, - это создать пользовательскую функцию для SQLite. (ссылки выше показывают, что опция) – xQbert

Смежные вопросы