SQL-поиск строкового/числового формата в предложенииwhere

Я использую SQLite3 для тестирования. Я пытаюсь реализовать маску формата поиска в предложенииwhere, чтобы очистить некоторый текст произвольной формы, хранящийся в базе данных.

Можно ли извлечь четыре цифры, за которыми следует тире, а затем пять цифр, например. хххх-ххххх

Вот некоторые варианты данных, которые у меня есть:

'Widget 1234-12345 Blah Blah',
'1234-12345_A',
'1234-12345 and 6789-12345'
'1234-1234567'

Все вышеперечисленное должно возвращать «1234-12345», поскольку это первое значение, которое будет соответствовать нашему числовому мачту xxxx-xxxxx.

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
2
0
72
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

SQLite поддерживает Regex для запросов выбора со следующим синтаксисом:

SELECT * FROM table WHERE attribute REGEXP '[0-9]{4}-[0-9]{5}';

Регулярное выражение

[0-9]{4}-[0-9]{5}

даст вам 4 цифры, за которыми следует тире, а затем 5 цифр. Если вы хотите сопоставить не только цифры, но и все, что их окружает, измените Regex на

.*[0-9]{4}-[0-9]{5}.*

Он предоставит вам все ведущие и конечные символы любой формы.

Не могли бы вы изолировать вывод формата в отдельные столбцы?

Lee Murray 28.05.2024 14:38

@LeeMurray, если честно, я не знаю, как превратить результат в новый столбец

Bending Rodriguez 28.05.2024 14:43

Обычно я бы сделал что-то вроде, но функция не существует в SQLite: - выберите REGEXP_SUBSTR('Widget 1234-12345 Blah Blah', '[0-9]{4}-[0-9]{5}') new_item

Lee Murray 28.05.2024 14:58

@LeeMurray, не можешь ли ты попытаться объединить мой оператор выбора с материалом new_item?

Bending Rodriguez 28.05.2024 15:03

Другие вопросы по теме