SQL: поиск строк, содержащих фразы, независимо от регистра - PullRequest
0 голосов
/ 15 мая 2018

Вот база данных, которую я использую: https://drive.google.com/file/d/1ArJekOQpal0JFIr1h3NXYcFVngnCNUxg/view?usp=sharing

Перечислите кафедру и общее количество преподавателей кафедр CS в алфавитный порядок deptname. CS отделы - это отделы, чье имя в верхнем регистре содержится фраза «Компьютер ... Наука» или «Компьютеры… Наука» или строчные буквы. Вы должны использовать оператор NATURAL JOIN.

Моя попытка ответить на этот вопрос:

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

Это продолжает выдавать без значений, я не уверен, что я делаю неправильно.

Спасибо

EDIT:

Спасибо всем. Вот что я использую сейчас (хотя и неэффективно):

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;

1 Ответ

0 голосов
/ 15 мая 2018

Оператор LIKE в MySQL уже нечувствителен к регистру, поэтому должно работать следующее:

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;
...