【问题标题】:SQL - Select name, no matter upper or lower case lettersSQL - 选择名称,无论大小写字母
【发布时间】:2016-04-07 13:36:36
【问题描述】:

我尝试选择所有带有“Schmidt”的名称。但是有些名字是小写的,有些是大写的。

我试试这个:

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

但是当单词中的一个字母是大写时(例如 SchmidT),语句没有找到这个。 知道有人解决这个问题的简单方法吗?

【问题讨论】:

  • 我将数据库标签切换为“oracle”(删除 MySQL),因为这种行为比 MySQL 更适合 Oracle。
  • 是的,这也不适用于 T-SQL。

标签: sql database oracle plsql


【解决方案1】:

我猜您使用的是 Oracle 而不是 MySQL,因为它默认区分大小写。只需使用upper()lower() 函数:

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

如果你想要像“施密特”这样的名字,我会添加一个s

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

注意:这将找到hammerschmidt 和类似名称。如果您想要完全匹配,请删除通配符或使用=

【讨论】:

  • 这是最完整和正确的答案,应该被接受。
【解决方案2】:

做小写比较:

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

【讨论】:

    【解决方案3】:

    如果您只是在寻找 Schmidt,我的偏好(为了可读性)是既不使用 LOWER 也不使用 UPPER,而是使用 INITCAP - 和相等,而不是 LIKE 运算符。像这样:

    select ...    where initcap(name) = 'Schmidt'
    

    【讨论】:

      猜你喜欢
      • 2015-04-18
      • 1970-01-01
      • 1970-01-01
      • 2019-01-31
      • 2022-06-30
      • 2019-07-01
      • 2020-01-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多