Я пытаюсь отфильтровать данные в листе моих клиентов Excel для своей компании. Три поля, которые мне нужны, это FIRST_NAME
, LAST_NAME
и COMPANY_NAME
.Query WHERE Только буквенные символы
Правилами заключаются в следующем:
FIRST_NAME
ИLAST_NAME
должныNOT
бытьNULL
FIRST_NAME
ИLAST_NAME
должны быть только буквенные- Приведенные выше правила имеют значения, если
COMPANY_NAME
являетсяNOT NULL
Итак, просто повторить, чтобы быть ясным. Клиент должен иметь FIRST_NAME
И a LAST_NAME
(Они не могут отсутствовать один или оба), НО, если у них есть COMPANY_NAME
, им разрешено иметь FIRST_NAME
и/или LAST_NAME
.
Вот некоторые примеры данных, и если они должны остаться в данных или нет:
FIRST_NAME | LAST_NAME | COMPANY_NAME | Good customer?
-----------|-----------|--------------|--------------------------------
Alex | Goodman | AG Inc. | Yes - All are filled out
John | Awesome | | Yes - First and last are fine
Cindy | | Cindy Corp. | Yes - Company is filled out
| | Blank Spa | Yes - Company is filled out
| | | No - Nothing is filled out
Gordon | Mang#2 | | No - Last contains non-alphabet
Jesse#5 | Levvitt | JL Inc. | Yes - Company is filled out
Holly | | | No - No last or company names
Вот запрос (с некоторыми полями в пункте SELECT
удалены):
SELECT VR_CUSTOMERS.CUSTOMER_ID, VR_CUSTOMERS.FIRST_NAME, VR_CUSTOMERS.LAST_NAME, VR_CUSTOMERS.COMPANY_NAME, ...
FROM DEV.VR_CUSTOMERS VR_CUSTOMERS
WHERE (
LENGTH(NAME)>4 AND
(UPPER(NAME) NOT LIKE UPPER('%delete%')) AND
(COMPANY_NAME IS NOT NULL OR (COMPANY_NAME IS NULL AND FIRST_NAME IS NOT NULL AND LAST_NAME IS NOT NULL AND FIRST_NAME LIKE '%^[A-z]+$%' AND LAST_NAME LIKE '%^[A-z]+$%'))
)
Я ve попытался также регулярное выражение '%[^a-z]%'
. Я пробовал RLIKE
и REGEXP
, вместо LIKE
, и они тоже не работали.
С вышеуказанным запросом результаты показывают только записи с COMPANY_NAME
.
вы можете создать пользовательскую функцию для этой цели. Взгляните на http://stackoverflow.com/a/10395393/6348498 – GurV