Вы можете попробовать:
country REGEXP ('^(USA|Italy|France|)$')
Я просто добавил еще |
после France
, что должно было бы сказать, что оно также соответствует ^$
, что совпадает с country = ''
.
Обновление: , поскольку этот метод не работает, я бы порекомендовал вам использовать это регулярное выражение:
country REGEXP ('^(USA|Italy|France)$|^$')
Обратите внимание, что вы не можете использовать регулярное выражение: ^(USA|Italy|France|.{0})$
потому что он будет жаловаться, что есть пустое подвыражение.Хотя ^(USA|Italy|France)$|^.{0}$
будет работать.
Вот несколько примеров возвращаемого значения этого регулярного выражения:
select '' regexp '^(USA|Italy|France)$|^$'
> 1
select 'abc' regexp '^(USA|Italy|France)$|^$'
> 0
select 'France' regexp '^(USA|Italy|France)$|^$'
> 1
select ' ' regexp '^(USA|Italy|France)$|^$'
> 0
Как видите, он возвращает именно то, что вы хотите.
Если вы хотите обрабатывать пустые значения одинаково (например, 0 пробелов и 5 пробелов, оба считаются пустыми), вы должны использовать регулярное выражение:
country REGEXP ('^(USA|Italy|France|\s*)$')
Это приведет к тому, что последняя строка в предыдущем примере будетведут себя по-разному, то есть:
select ' ' regexp '^(USA|Italy|France|\s*)$'
> 1