【问题标题】:SQL: Finding rows containing phrases regardless of caseSQL:不考虑大小写,查找包含短语的行
【发布时间】:2018-05-15 02:06:38
【问题描述】:

这是我正在使用的数据库:https://drive.google.com/file/d/1ArJekOQpal0JFIr1h3NXYcFVngnCNUxg/view?usp=sharing

列出 CS 部门的部门编号和学者总数,在 部门名称的字母顺序。 CS部门是其部门名称的部门 包含大写的短语“Computer ... Science”或“Computing ... Science”或 小写字母。您必须使用 NATURAL JOIN 运算符。

我对这个问题的尝试:

SELECT deptnum
FROM academic NATURAL JOIN department
WHERE UPPER(deptname) LIKE ('%computer science%') OR UPPER(deptname) LIKE 
('%computing science%')
ORDER BY deptnum;

它一直没有值,我不确定我做错了什么。

谢谢

编辑:

谢谢大家。这就是我现在正在使用的(虽然效率低下):

SELECT distinct deptnum
FROM academic NATURAL JOIN department
WHERE UPPER(deptname) LIKE ('%COMPUTER%') AND UPPER(deptname) LIKE 
('%SCIENCE%')OR UPPER(deptname) LIKE ('%COMPUTING%') AND UPPER(deptname) 
LIKE ('%SCIENCE%')
ORDER BY deptnum;

【问题讨论】:

  • 跳转到sqlfiddle.comrextester.com
  • UPPER(deptname) LIKE ('%COMPUTER%') OR UPPER(deptname) LIKE ('%COMPUTING SCIENCE%') 因为你想匹配 UPPER CASE
  • 您的数据库(谷歌驱动链接)需要访问权限,在发布链接之前分享它
  • 我用一个可分享的链接更新了我的原始帖子:drive.google.com/file/d/1ArJekOQpal0JFIr1h3NXYcFVngnCNUxg/…
  • @maSTAShuFu 谢谢你的工作,但我错过了一些查询。它似乎没有输出诸如“计算机与信息科学学院”之类的部门名称,即使它包含“计算机科学”

标签: mysql sql natural-join


【解决方案1】:

MySQL 中的LIKE 运算符已经不区分大小写,所以以下应该可以工作:

SELECT deptnum
FROM academic
NATURAL JOIN department
WHERE deptname LIKE '%computer%' OR deptname LIKE '%computing science%'
ORDER BY deptnum;

我们可以使用REGEXP 稍微整理一下,这也是不区分大小写的:

SELECT deptnum
FROM academic
NATURAL JOIN department
WHERE deptname REGEXP 'computer|computing science'
ORDER BY deptnum;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-06
    • 1970-01-01
    • 2019-08-20
    • 1970-01-01
    • 2016-08-18
    • 2015-04-27
    • 1970-01-01
    相关资源
    最近更新 更多