powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / извлечь определенное слово
19 сообщений из 19, страница 1 из 1
извлечь определенное слово
    #40140558
Ksenia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помогите, пж
Есть таблица с полем адрес, прописан одной строкой г.Y X район ул.Z и цифры (например г. Екатеринбург Октябрьский район ул. Ленина 65/23
нужно чтобы выводилось
Y
X
Z
цифры
каким образом можно это сделать подскажите пж
...
Рейтинг: 0 / 0
извлечь определенное слово
    #40140560
Tosh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ksenia [игнорируется] 
Можно посмотреть в сторону разбора строки по словам как здесь
Останется только придумать что предварительно надо удалить из строки (например предварительным реплейсом "незначащих" последовательностей)

Либо - CLR
...
Рейтинг: 0 / 0
извлечь определенное слово
    #40140561
Ksenia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tosh [игнорируется] 

я новичок в этом деле !!! И чтот я не понимаю как это сделать
...
Рейтинг: 0 / 0
извлечь определенное слово
    #40140565
Фотография Green2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ksenia  11.04.2025, 08:24
[игнорируется]
Помогите, пж
Есть таблица с полем адрес, прописан одной строкой г.Y X район ул.Z и цифры (например г. Екатеринбург Октябрьский район ул. Ленина 65/23
нужно чтобы выводилось
Y
X
Z
цифры
каким образом можно это сделать подскажите пж
Ещё вопрос. В тексте может попасться произвольный текст, который не по этому формату? Просто руками набили адрес типа "на деревню дедушке"?
...
Рейтинг: 0 / 0
извлечь определенное слово
    #40140568
ShIgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Green2 [игнорируется] 

а города и улицы из двух и более слов как будете обрабатывать?
идеальное решение - использовать любой внешний онлайн-сервис, который приведет в порядок ваши адреса с выдачей координат.
если нет денег - то писать такой сервис самому используя открытые адресные базы. КЛАДР (устарел) или ФИАС например.
тупой разбор строки не будет давать требуемой точности.
...
Рейтинг: 0 / 0
извлечь определенное слово
    #40140580
Ksenia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShIgor [игнорируется] 

в таком случае можно убрать только цифры?
...
Рейтинг: 0 / 0
извлечь определенное слово
    #40140581
Alex_Toms
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ksenia [игнорируется] 

Добрый день.

Это разовая работа разобрать строку адреса или нужен запрос который будет часто разбирать строку с адресом?
Еще почему то нет индекса.
...
Рейтинг: 0 / 0
извлечь определенное слово
    #40140582
Ksenia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Toms [игнорируется] 

это часто разбирать строку, индекс нужен
...
Рейтинг: 0 / 0
извлечь определенное слово
    #40140583
Ksenia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ksenia [игнорируется] 

я попробовала разбить строку по 'названиям', но не могу вывести нужные

SELECT p,name,DATA FROM (SELECT p,name, Split.a.value('.', 'NVARCHAR(MAX)') AS DATA
FROM
(SELECT peple, id AS p,Name,CAST('<X>'+REPLACE([Address], ',', '</X><X>')+'</X>' AS XML) AS String
FROM [PeopleSet]
) AS A
CROSS APPLY String.nodes('/X') AS Split(a)) AS pop
пытаюсь вывести через
через PATINDEX
показывает все как надо но вырезать не получается
...
Изменено: 14.04.2025, 11:23 - Ksenia
Рейтинг: 0 / 0
извлечь определенное слово
    #40140584
ShIgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ksenia [игнорируется] 

можно. а зачем?
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
with [таблица] as (
  select cast([id_строки] as int) [id_строки], cast([строка] as nvarchar(50)) [строка]
  from (
    values (1, 'test 12'), (2, '34 test'), (3, 'te56st'), (4, 'te 78 st'), (5, '9 te st 0')
  ) [таблица]([id_строки], [строка] )
),
cts as (
  select
    [id_строки],
    [строка],
    0 as [итерация]
  from
    [таблица]
  where
    [строка] like N'%[0-9]%'
  union all
  select
   cts.[id_строки],
    cast(replace(cts.[строка], nchar([итерация]+48), N'~') as nvarchar(50)) [строка],
    cts.[итерация]+1 [итерация]
  from
    cts
  where
    cts.[итерация]+1 < 11
)
select
  t.[строка] [оригинал], cts.[строка] [результат]
from
  cts
  inner join [таблица] t on t.[id_строки] = cts.[id_строки] and cts.[итерация] = 10
...
Рейтинг: 0 / 0
извлечь определенное слово
    #40140585
Дет-Пердет
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ksenia  11.04.2025, 09:55
[игнорируется]
Tosh [игнорируется] 

я новичок в этом деле !!! И чтот я не понимаю как это сделать
Полагаю, что самый быстрый вариант - через постель
...
PaNik:
А по сути вопроса есть что сказать?
Рейтинг: 0 / 0
извлечь определенное слово
    #40140586
Фотография Green2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ksenia [игнорируется] 

Я думаю, у вас неправильный формат данных. Нельзя такое хранить в одной куче.
Думаю, надо однократно разобрать это по полям, и не пытаться работать с такой таблицей постоянно.

А пока сделать какую нибудь программу для разбора на обычном языке типа C#, разобрать то что можно понять, а непонятое руками набить.
...
Изменено: 14.04.2025, 15:52 - Green2
Рейтинг: 0 / 0
извлечь определенное слово
    #40140587
Дет-Пердет
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Цитата 
[игнорируется]
<div id="modwarning_moderator_40140585" class="moderator_name">PaNik:</div>
<div id="modwarning_warning_40140585">А по сути вопроса есть что сказать?</div>
Распарсить строку в кучу строк не сложно, можно split_string использовать если не древняя версия sql или json/xml... Здесь основного нет - понимания как парсить.

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

ну в тз "г.Y X район ул.Z и цифры (например г. Екатеринбург Октябрьский район ул. Ленина 65/23" ну наверное можно вычленить если с буквы г. стартует это город... если есть слово район то до него будет район или после?, если есть ул. после будет наименование улицы (из одного или больше слов? или "Маяковского улица" - это как интерпретировать?) в общем здесь хуеву гору шаблонов нужно придумывать.... и их может быть бесконечно, нужно на данных сидеть - фиганул один шаблон - ок - пометил обработалось, далее не обработанные данные подбирать шаблон.

Разбить по строкам не сложно - я вот особого смысла просто в этом не вижу
1.png
...
Рейтинг: 0 / 0
извлечь определенное слово
    #40140588
Дет-Пердет
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Green2  14.04.2025, 15:52
[игнорируется]
Ksenia [игнорируется] 

Я думаю, у вас неправильный формат данных. Нельзя такое хранить в одной куче.
Думаю, надо однократно разобрать это по полям, и не пытаться работать с такой таблицей постоянно.

А пока сделать какую нибудь программу для разбора на обычном языке типа C#, разобрать то что можно понять, а непонятое руками набить.
Я думаю, что ты немного тупо-ват
...
Рейтинг: 0 / 0
извлечь определенное слово
    #40140590
Ksenia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну допустим разбить по строкам и выделить слово начинается с буквы г
...
Рейтинг: 0 / 0
извлечь определенное слово
    #40140591
Ksenia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сделано таким образом разбита фраза по словам(но по строкам)
можно сделать так чтобы было все одной строкой

получается
результат.png
...
Изменено: 15.04.2025, 08:05 - Ksenia
Рейтинг: 0 / 0
извлечь определенное слово
    #40140603
Ksenia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кто-нибудь может помочь?
...
Рейтинг: 0 / 0
извлечь определенное слово
    #40140604
Фотография Green2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ksenia  16.04.2025, 05:34
[игнорируется]
кто-нибудь может помочь?
Я бы предложил программу на обычном языке написать. И разбить по КЛАДР.
Оставшиеся строки обработать вручную.
...
Рейтинг: 0 / 0
извлечь определенное слово
    #40140605
Фотография basename
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ksenia  16.04.2025, 05:34
[игнорируется]
кто-нибудь может помочь?
Цитата 
[игнорируется]
г. Екатеринбург Октябрьский район ул. Ленина 65/23
1. Это нужно обязательно сделать средствами SQL? Или можно выгрузить и распарсить скриптово?
2. Формат всегда такой как в цитате? Или может быть без пробелов, понятно, что там в адресе в одну строку никакой структуризации нет, может добавится корпус, района вообще млжет не быть или что-то в этом духе. Самое важное, какой там формат во всех стркоах, если там писалось как душе угодно, сложно представить, как это распарсить даже скриптово
3. Можете здесь зарегаться, спросить, MSSQL базоёбы, помогите дэвушке! , это параллельный форум, там отсюда людей поболее общается, может быстрее подскажут по делу, но будьте готовы к соответствующей манере общения со стороны местного контингента.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / извлечь определенное слово
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]