在mysql中为'like'操作指定别名

时间:2011-07-05 04:30:45

标签: mysql sql

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

输出表格显示为

UN
Bob
Bobby
Bony
nick
nikitha

在这里,我想为Bob,Bobby和Bony提供一个通用名称,以及nick和nikitha的另一个常用名称。

我可以这样做吗?

我试过这样。

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

输出中的Bt错误。我该怎么做?

3 个答案:

答案 0 :(得分:1)

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列,其中包含实际名称。

如果要搜索仅匹配这两种模式之一的名称,可以在WHERE子句中添加过滤器。我的感觉是,你真的只是想看看哪些名字是男性,哪些名字是女性,所以我把这部分留下了。

答案 1 :(得分:0)

我为您解读了这样的问题:您想要选择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'和{ {1}}匹配。

答案 2 :(得分:0)

    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