Как искать regexp в Teradata?

Хорошие, я пробую получать регулярное выражение используя функцию REGEXP_SUBSTR в Terdata, однако хочу получить как оказанный только часть той же самой.

У меня есть основание с колонной, у которой есть стоимость со следующей формой:

КОЛОННА

'texto1#1234' 'texto2#5678' 'texto3#91011' 'texto4#121314' 'texto5#151617' 'texto6#18'

и я хочу получить только цифры:

РЕЗУЛЬТАТ

1234 5678 91011 121314 151617 18

Применив функцию REGEXP_SUBSTR(COLUMNA, '#([0-9]{7,12})$') я получаю следующее:

РЕЗУЛЬТАТ

'#1234' '#5678' '#91011' '#121314' '#151617' '#18'

Как я делаю, чтобы получать результаты без "#" используя ту же функцию REGEXP_SUBSTR?

2
задан 17.01.2017, 10:19
2 ответа

Я не понял хорошо твой вопрос, сначала ты подтверждаешь примерами то, что ты желаешь с вещью и после подтверждаешь примерами другую вещь с другим примером, но пойди, давайте пробовать решать два.

В первом примере, у тебя есть это:

'texto1#1234' 'texto2#5678' 'texto3#91011' 'texto4#121314' 'texto5#151617' 'texto6#18'

И согласно которому ты просишь, желаешь ТОЛЬКО ЧИСЛА, ok давайте получать регулярное выражение.

'\w+#(\d+)'

Где token \w+ подожди любое слово с минимумом 1 длиной, следуемого буквальной # что это ждет; буквальная одна # и в конце концов группа задержания (которое что ты желаешь) где token \d+ подожди цифру с минимумом 1 длиной.

Итак, давайте тестировать это в каком-то анализаторе регулярных выражений.

Действительно, результат, который ты желаешь, состоит в том, что он появляется, захватывая только числовую стоимость после буквальной #.

Если оно ты не функционирует, этот код, - потому что система, где ты хочешь протестировать это, не считает определенными tokens как \d или \w, в данном случае он рекомендовал бы тебе использовать следующего.

'[a-zA-Z0-9]+#([0-9]+)'

Что главным образом “то же самое, во что ты желаешь” но здесь в классе [a-zA-Z0-9] только благосклонно принятая буквальные или цифры, в то время как в token \w смоги принимать специальные символы как _. Равного способа, я оставляю тебе соединение для того, чтобы ты смог тестировать это.

Сейчас, для второго примера, где у нас есть ввод как дела:

'#1234' '#5678' '#91011' '#121314' '#151617' '#18'

И результат, который ты желаешь, - следующий:

'#1234' '#5678' '#91011' '#121314' '#151617' '#18'

Без буквальной #, хороший для этого мы использовали бы следующее выражение.

'#([0-9]+)'

Равного способа, ты можешь вводить регулярное выражение и тестировать ее, чтобы проверять, что, если оно функционирует.

Я не знаю, было ли это действительно то, что ты искал, привет.

0
ответ дан 24.11.2019, 14:13

Попытайся с:

REGEXP_SUBSTR(COLUMNA, '[0-9]+', 1, 2, 'i')

где, согласно Регулярному Экспрессион Функтионс:

  • COLUMNA, текст, где функция будет искать,
  • '[0-9]+', регулярное выражение, которое функция использует для поисков,
  • 1, начинаясь с первого положения в тексте,
  • 2, находя второе происшествие,
  • 'i', не импортируя, если они прописные или мелкие.
1
ответ дан 24.11.2019, 14:13