Я работаю с сторонним приложением, которому нужен альтернативный список имен для имен улиц. Разработчики предоставили сценарий Python, который будет генерировать список, но время, которое требуется для генерации, ужасно. То, что я пытаюсь сделать, это создать запрос или хранимую процедуру, которая создаст все различные комбинации имен улиц и сохранит JOINID для каждого имени. Вот как выглядит источник.SQL Server Комбинированный запрос
JOINID StreetName
147 PAULSON RD
165 NORTH AVE
270 E SCHOOL RD
212 OAKWOOD AVE
Результаты будут выглядеть следующим образом:
JOINID StreetName
147 PAULSON
147 PAULSON RD
165 NORTH
165 NORTH AVE
270 SCHOOL
270 E SCHOOL
270 SCHOOL RD
270 E RD
270 E SCHOOL RD
212 OAKWOOD
212 OAKWOOD AVE
Результаты будут исключены такие значения, как один RD или другого типа дороги.
Это текущий запрос, с которым я работаю. Это возвращает список разделов с соответствующими ID
'SELECT
JOINID, Split.a.value('.', 'VARCHAR(100)') AS Streetname
FROM
SELECT JOINID, CAST('<M>' + REPLACE([StreetName], ' ', '</M><M>') + </M>'
AS XML) AS CVS FROM [L].[ROADCENTERLINESHF]) AS A CROSS APPLY
CVS.nodes('/M') AS Split(a)`
Любые предложения были бы замечательными. Спасибо
Что вы уже пробовали? –
Получение всех возможных перестановок не будет быстрым, особенно если есть много данных. Вам нужно определить некоторые бизнес-правила, о каких перестановках вы хотите исключить. Я заметил, что вы включили NORTH из 165, но исключили E из 270. Я подозреваю, что у вас будет довольно хороший список исключений (суд, ct, road, rd, rr, po, po, ave, avenue, st, street и т. Д. .) –
У меня есть это, что дает мне список разделов с соответствующими идентификаторами. 'SELECT JOINID, Split.a.value ('. ',' VARCHAR (100) ') AS Имя улицы FROM (SELECT JOINID, CAST (' '+ REPLACE ([StreetName],' ',' ') + ' ' AS XML) AS CVS FROM [L]. [ROADCENTERLINESHF]) КАК КРОСС ПРИМЕНЯТЬ CVS.nodes ('/ M') AS Split (a) '@ Shachaf.Gortler –
broncosbuck99