При использовании SELECT вы можете изменить значение возвращаемого поля на основе других полей? - PullRequest
7 голосов
/ 15 января 2011

При использовании MySQL SELECT вы можете изменить значение возвращаемого поля на основе других полей?

Например, если у меня есть это, выберите:

SELECT city,state,country FROM table

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

Пример таблицы:

id | city | state | country
-----------------------------
1  | Here | There | MyCountry
2  |      |       | YourCountry

Итак, в приведенной выше таблице я хочу, чтобы результаты для id = 1 возвращались Здесь, Там, MyCountry, но результаты для id = 2 должны быть пустыми, пустыми, пустыми

Спасибо

РЕДАКТИРОВАТЬ: Чтобы уточнить, предложение WHERE не будет работать, потому что мне нужно вернуть строку, даже если город и штат пусты. Лучшим примером может быть SELECT id, город, штат, страна FROM my_table

Ответы [ 4 ]

8 голосов
/ 15 января 2011

Обновление (исправлены опечатки):

SELECT city,state,
CASE 
 WHEN (city IS NULL OR city='') AND (state IS NULL or state='') THEN ''
 ELSE country
END as country_1
 FROM `table`

Вы также можете использовать IF вместо CASE:
IF ((city IS NULL OR city='') AND (state IS NULL or state=''),'',country) as country_1

1 голос
/ 15 января 2011

a1ex07 прав, но вам нужно исправить несколько ошибок в запросе в его SELECT stmt.

во-первых, пропущена запятая после слова «состояние», а во-вторых, если ваша таблица действительно называется «таблица», вы должны заключить ее в обратные кавычки, потому что это зарезервированное ключевое слово MySQL.

SELECT city,state, 
CASE 
 WHEN (city IS NULL OR city='') AND (state IS NULL or state='') THEN ''
 ELSE country
END as country_1
 FROM `table`` 

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

1 голос
/ 15 января 2011

Ответ - да;Вы ищете то, что называется функциями потока управления.

Взгляните на http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html

0 голосов
/ 15 января 2011

Почему бы вам просто не использовать предложение WHERE?

Например:

SELECT city, state, country FROM <table> WHERE (city <> "" OR state <> "");

N.B .: Вам нужно заменить вышеприведенное '<> "" на "IS NOT NULL", если они фактически обнуляются, а не просто пусты.

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