MySQL Case Заявления - PullRequest
       4

MySQL Case Заявления

1 голос
/ 27 октября 2011

Кто-нибудь здесь знает о существенном различии одного оператора CASE со многими WHEN от нескольких операторов CASE?

например.

SELECT
  blah
  , CASE WHEN x THEN 'abc'
      WHEN y THEN 'deF'
      WHEN z THEN 'gHi'
    ELSE END

  , CASE WHEN x THEN 'abc' ELSE
      CASE WHEN y THEN 'deF' ELSE
        CASE WHEN z THEN 'gHi' ELSE
        END
      END
    END

.

Заранее спасибо за идеи!

Ответы [ 2 ]

4 голосов
/ 27 октября 2011

Не полностью уверен в том, что вы хотите услышать, но ... Существует несколько WHEN предложений, поэтому вам не нужно вкладывать CASE операторов.

Редактировать:

Чтобы прояснить ситуацию: обе конструкции могут делать одно и то же, но вложенные CASE делают код более запутанным и нечитаемым.Аналогичный пример:

SELECT
    CONCAT_WS(' ', 'A', CONCAT_WS(' ', 'B', CONCAT_WS(' ', 'C'))) AS nested,
    CONCAT_WS(' ', 'A', 'B', 'C') AS multiple
2 голосов
/ 27 октября 2011

С Как написать не поддерживаемый код :

Вложенный переключатель
(переключатель внутри переключателя) - это наиболее сложный тип раскручивания человеческого разума.

Это мнение, конечно, но с которым я не могу поспорить. (Конечно, case и switch - это разные синтаксис для одной и той же логической конструкции.) Ваша вторая формулировка просто излишне противна, поэтому избегайте ее, если у вас нет действительно веской причины.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...