2016-04-07 71 views
1

我尝试使用“Schmidt”选择所有名称。但有些名字是小写字母和大写字母。SQL - 选择名称,不管大写还是小写字母

我试试这个:

Select * from Account 
where name like '%chmidt%' 
or name like '%CHMIDT%' 

但当字里面一个字母是大写(e.g SCHMIDT),没有找到该声明。 知道某人一个简单的方法来解决这个问题?

+0

我将数据库标记切换到“oracle”(删除MySQL),因为该行为比MySQL更适合Oracle。 –

+0

是的,这不适用于T-SQL。 – GibralterTop

回答

4

我猜您正在使用Oracle和MySQL的没有,因为它是区分默认灵敏。只需使用upper()lower()功能:

Select a.* 
from Account a 
where lower(a.name) like '%schmidt%'; 

注:

Select * 
from Account 
where lower(name) like '%chmidt%'; 

,如果你想要一个像“施密特”的名字我想补充一个s这将找到hammerschmidt和相似的名称。如果您想要完全匹配,请删除通配符或使用=

+0

这是最完整和正确的答案,应该被接受为这样。 – SubliemeSiem

0

做一个较低的情况相比:

Select * from Account 
where lower(name) like '%chmidt%' 
0

如果您只是在寻找施密特,我的偏好(为了可读性)既不使用LOWER也不使用UPPER,而是使用INITCAP - 并且相等,而不是LIKE操作符。像这样:

select ... where initcap(name) = 'Schmidt' 
相关问题