Включить несколько вариантов в ‘LIKE’

#sql #oracle

#sql #Oracle

Вопрос:

Я пытаюсь отобразить всех поставщиков, у которых первый адрес является почтовым ящиком, но я затрудняюсь, как отформатировать его с помощью LIKE. В моей таблице поле запроса может быть отформатировано любым из этих 3 способов, но я не уверен, как включить все 3 в LIKE. То, что у меня сейчас есть, выдает мне ошибку «отсутствует правая скобка»

 SELECT vendor_name, vendor_address1, vendor_address2
FROM ap_vendors
WHERE vendor_address1 LIKE ('PO Box%', 'P. O. Box%', 'P O Box%')
  

Ответ №1:

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

 WHERE regexp_like(vendor_address1, '^(PO Box|P. O. Box|P O Box)')
  

Или несколько LIKE шаблонов:

 WHERE vendor_address1 LIKE 'PO Box%' OR
      vendor_address1 LIKE 'P. O. Box%' OR
      vendor_address1 LIKE 'P O Box%'
  

Ответ №2:

Кажется, что то, что вы хотите, это логика OR

Вы можете сделать это следующим образом:

 SELECT vendor_name, vendor_address1, vendor_address2
FROM ap_vendors
WHERE vendor_address1 LIKE 'PO Box%' 
  OR vendor_address1 LIKE 'P. O. Box%'
  OR vendor_address1 LIKE 'P O Box%'