Поиск значения, которое может иметь вариации - SQL - PullRequest
0 голосов
/ 29 сентября 2019

Мне дали задание перечислить названия компаний и отделов, расположенных в Виктории или Тасмании.Значение 'Victoria' может иметь такие вариации, как 'VIC', 'vic' и т. Д. (То же самое касается Тасмании.)

Хотя это может показаться простой задачей, я не мог понять, что делать,Я пытался использовать знак процента (%) перед некоторыми символами, но он явно не работал.

Как мне найти все компании, которые находятся в Виктории и Тасмании со всеми возможными вариациями?Спасибо!

РЕДАКТИРОВАТЬ: Я использую Oracle SQL Developer для этой задачи.

Ответы [ 3 ]

1 голос
/ 29 сентября 2019

Вы можете использовать условие regexp_like() для фильтрации в режиме без учета регистра ('i'):

select location
  from dept
 where regexp_like(location,'ViCtoria|Tasmania','i')

, где труба (-и) обозначает список других параметров фильтрации, соответствующихдля логики ИЛИ.

Демо

1 голос
/ 29 сентября 2019

Может быть, вы можете использовать регулярные выражения.Пример:

SELECT 
    departament
FROM
    location
WHERE
    departmantname REGEXP '^(VIC|vic|Vic)'
ORDER BY id;

MYSQL: http://www.mysqltutorial.org/mysql-regular-expression-regexp.aspx

MSSQL: MSSQL Регулярное выражение

0 голосов
/ 29 сентября 2019

Из того, что вы описываете, like должно быть достаточно:

where lower(location) like 'vic%' or
      lower(location) like 'tas%'

Вы не указали, какие есть все варианты.Это просто возвращает все местоположения, которые начинаются с одного из этих префиксов.

Вы также можете выразить это как регулярное выражение:

where regexp_like(location, '^(vic,tas)', 'i')

С параметром соответствия 'i' сравнениенечувствительны к регистру.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...