присвоение псевдонима операции «лайк» в mysql - PullRequest
0 голосов
/ 05 июля 2011
select userName as UN like '%Bo%' or userName like '%nic%' from Names 

таблица вывода отображается как

UN
Bob
Bobby
Bony
nick
nikitha

здесь я хочу дать общее имя для Боба, Бобби и Бони и другое общее имя для Ника и Никиты.

Могу ли я это сделать?

Я пытался так.

select userName as UN like '%Bo%' as male or userName like '%nic%' as female from Names

Ошибка Bt на выходе. Как я могу это сделать?

Ответы [ 3 ]

1 голос
/ 05 июля 2011
SELECT (CASE WHEN userName LIKE '%bo%' THEN 'Male'
             WHEN userName LIKE '%nic%' THEN 'Female'
             ELSE 'Unknown'
       END) AS sex,
       userName AS UN
FROM name;

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

Вы можете добавить фильтр в ГДЕпредложение, если вы хотите искать ТОЛЬКО имена, соответствующие одному из этих двух шаблонов.Я чувствую, что вы действительно хотели узнать, какие имена были мужскими, а какие - женскими из всех имен, поэтому я оставил эту часть.

0 голосов
/ 05 июля 2011
    SELECT  CASE WHEN userName LIKE '%Bo%' THEN 'Common name for Bo' -- replace string inside quotes with the common name
                  WHEN userName like '%nic%' THEN 'Common name for nic' -- replace string inside quotes with the common name
                  ELSE userName -- In any other cases return the username
   END AS UN
    FROM Names 
0 голосов
/ 05 июля 2011

Я прочитал ваш вопрос следующим образом: вы хотите выбрать userName значения, которые похожи на %Bo% или %nic%, и вы хотите узнать, какой из двух шаблонов был сопоставлен.

Если я прав, то вы хотите, чтобы оператор CASE генерировал значение вашего флага "который соответствует", что-то вроде этого:

select userName as UN,
       case when userName like '%Bo%' then 'Bo' else 'nic' end as which_one
from Names
where userName like '%Bo%'
   or userName like '%nic%'

Затем вы смотрите на which_one, чтобы увидеть, какой из них соответствует, если %Bo% соответствует, тогда which_one будет 'Bo', в противном случае это будет 'nic' и %nic% соответствие.

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