Как отформатировать данные в столбце для предложения WHERE непосредственно перед выполнением SELECT? - PullRequest
0 голосов
/ 24 января 2020

Я использую Microsoft SQL Сервер с уже сохраненными данными. В одной из моих таблиц я могу найти данные вроде:

+--------+------------+
| id     | value      |
+--------+------------+
| 1      | 12-34      |
| 2      | 5678       |
| 3      | 1-23-4     |
+--------+------------+

Я понял, что столбец VALUE не был правильно отформатирован при вставке. Я пытаюсь получить идентификатор по заданному значению:

SELECT d.id FROM data d WHERE d.value = '1234';

Есть ли способ форматировать данные в столбце непосредственно перед предложением SELECT ? Должен ли я создать новое представление и изменить столбец в этом представлении или, возможно, использовать сложный REGEX для получения только цифр (с компаратором LIKE )?

  • PS Я управляю база данных в проекте Джакарта EE с использованием Hibernate.
  • PS2. Я не могу изменить сохраненные данные.

1 Ответ

2 голосов
/ 24 января 2020

Один метод заключается в использовании replace() перед сравнением:

WHERE REPLACE(d.value, '-', '') = '1234'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...