Снежинка - Проверьте, являются ли первые 3 символа строки буквами - PullRequest
0 голосов
/ 09 октября 2019

Пытаюсь определить, как в Snowflake SQL пытаться определить, начинается ли код продукта с трех букв.

Предложения?

Я только что попробовал: СЛЕВА (P0.PRODUCTCODE, 3) НЕ НРАВИТСЯ '[a-zA-Z]%', но это не сработало.

Спасибо, ребята

1 Ответ

2 голосов
/ 09 октября 2019

Вы можете использовать REGEXP_LIKE, чтобы вернуть логическое значение, указывающее, соответствует ли ваша строка шаблону, который вас интересует.

В вашем случае, что-то вроде REGEXP_LIKE(string_field_here, '[a-zA-Z]{3}.*')

Разбивка шаблона регулярного выражения:

  • [a-zA-Z]: сопоставлять только буквы, прописные и строчные
  • {3}: требовать три из этих букв
  • .*: разрешить любое количество любых символов после этих трех букв

Примечание: во многих случаях вам нужно будет конкретно указать начало / конец строки вшаблон, но реализация Snowflake обрабатывает это для вас. Начиная с документов :

Функция неявно привязывает шаблон на обоих концах (т. Е. '' Автоматически становится '^ $', а 'ABC' автоматически становится '^ ABC $'). Для соответствия любой строке, начинающейся с ABC, шаблон будет иметь вид 'ABC. *'.


. Вы можете попробовать выполнить следующие примеры:

SELECT REGEXP_LIKE('abc', '[a-zA-Z]{3}.*') AS _abc,
       REGEXP_LIKE('123', '[a-zA-Z]{3}.*') AS _123,
       REGEXP_LIKE('abc123', '[a-zA-Z]{3}.*') AS _abc123,
       REGEXP_LIKE('123abc', '[a-zA-Z]{3}.*') AS _123abc
...