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错误。我该怎么做?
答案 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