В принципе, я имею дело с ужасно настроенной таблицей, которую я бы хотел перестроить, но я не уверен, что смогу на этом этапе.SQL: выберите выделение, основанное на регулярном выражении
Итак, таблица имеет адреса, и у нее есть тонна похожих записей для одного и того же адреса. Но иногда есть небольшие отклонения в адресе (т. Е. Комната № прикрепляется к В ОДНОМ КОЛОНКЕ, тьфу).
Как это:
ид | place_name | place_street
1 | Имя места One | 1001 Mercury Blvd
2 | Место Имя Два | 2388 Юпитер-стрит
3 | Имя места One | 1001 Mercury Blvd, Suite A
4 | Имя места, один | 1001 Mercury Boulevard
5 | Место Nam Two | 2388 Jupiter Street, Rm 101
То, что я хотел бы сделать это в SQL (это MSSQL), если это возможно, это сделать запрос, который, как:
SELECT DISTINCT place_name, place_street where [the first 4 letters of the place_name are the same] && [the first 4 characters of the place_street are the same].
, я догадаться на этот момент, получить:
Plac | 1001
Plac | 2388
В принципе, тогда я могу выяснить, какие главные адреса я должен прорваться в другую таблицу, чтобы нормализовать это, потому что остальные - просто небольшие деривации.
Надеюсь, это имеет смысл.
Я провел некоторое исследование, и я вижу людей, использующих регулярные выражения в SQL, но многие из них, похоже, используют сценарии С или что-то в этом роде. Должен ли я писать функции регулярных выражений и сохранять их в SQL Server перед выполнением любых регулярных выражений?
Любое направление относительно того, могу ли я просто написать их в SQL или если у меня есть еще один шаг, чтобы пройти, было бы здорово.
Или о том, как подойти к этой проблеме.
Заранее благодарен!
Конечно, вы имели в виду выбор отдельных, не так ли? ;) –
Нет. :) Вам не нужно «отличное», потому что предложение «group by» делает то же самое, т. Е. Каждая строка в результирующем наборе будет уникальной комбинацией первых четырех символов place_name и place_street. – Matt