powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Заменить...
9 сообщений из 9, страница 1 из 1
Заменить...
    #35294275
Domani
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет
Есть база в которой есть поле DOM(Character)
имееться около 500 000 записей, но форма написания встречаеться разная
К примеру:
38-26
43/1
24-Б
56В
а хотелось бы привести все к такому виду
38/26
43/1
24 Б
56В
Подскажите пожалуйста
...
Рейтинг: 0 / 0
Заменить...
    #35294357
Galyamov Rinat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну первое - это привести таблицу к третей нормальной форме. У тебя даже
первой нет.
Номер дома и литера дома - это все таки разная информация и должна храниться
в разных полях.

Второе - смотри в сторону функций AT(), isalpha(), isdigit(), val(),
transform() и связанные с ними.

Суть разбора поля - перебор символов в поле до тех пор пока не кончатся
цифры - это номер дома. Если первый символ после номера дома "-", " ", "/" -
это разделитель. Все что дальше литера.
Если литера цифровая ставишь "-", буквенная - "-" или как тебе уже надо.

Сборка того что ты хочешь видеть в поле
Номер_Дома+ТВОЙ_РАЗДЕЛИТЕЛЬ+Сама_Литера. Мусор (тот разделитель который был,
точки, запятые и прочее) выбрасываешь.

Советую сначала сделать на тестовой таблице. Ибо может запросто встретиться
"стр." или "блок" - а тебе уже решать на что менять такие буквы, ведь по
сути это и не литера (она пойдет дальше) и не номер дома.


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Заменить...
    #35294379
Domani
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вообще вот так все это выглядит
ul(character) dom(character) korp(character) flat(character)
Я хочу их привести к одинаковому виду для того что бы свести поля и удалить повторы. Просто если так сводить и проверять получсаеться что ыстречаються записи идеинтичны но в одной 38-24, а вдругой 38/24
...
Рейтинг: 0 / 0
Заменить...
    #35294387
Galyamov Rinat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в третьей 38/24, в четвертой 3824 - а вот тут уже проблема.

В общем разруливай, но имей в виду, что это неудачная реализация хранения
Номера и литеры в одном поле...


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Заменить...
    #35294388
Domani
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
впринципе я понял...
еще бы поподробней)) самую малость, готовой прогия не прошу!
...
Рейтинг: 0 / 0
Заменить...
    #35294399
Domani
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Galyamov Rinat


В общем разруливай, но имей в виду, что это неудачная реализация хранения
Номера и литеры в одном поле...


Posted via ActualForum NNTP Server 1.4


Это я понимаю, просто вот в таком виде она до меня и дошла
...
Рейтинг: 0 / 0
Заменить...
    #35294589
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Domaniвпринципе я понял...
еще бы поподробней)) самую малость, готовой прогия не прошу!

А помоему готовую прогу просишь. Все что надо для нее тебе уже сказали :)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
func ParseDom
lPara tcDom
local lcDom, lcKor, i, lcType, lcC
tcDom = alltrim(tcDom)
lcDom = ''
lcKor = ''
lcType = 'Дом'
for i =  1  to len(tcDom)
	lcC = substr(tcDom, i,  1 )
	do case
		case lcType = 'Дом' && В номере дома могут быть только цифры
			if isdigit(lcC)
				lcDom = lcDom + lcC
			else
				if !empty(lcDom)
					lcType = 'Корпус'
					i = i -  1 
				endif
			endif
		case lcType = 'Корпус' and (isdigit(lcC) or isalpha(lcC)) && В номере корпуса могут быть только цифры и буквы
			lcKor = lcKor + lcC
	endcase
endfor
return lcDom + ' ' + lcKor
...
Рейтинг: 0 / 0
Заменить...
    #35294623
Domani
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо!!!!!!!!
...
Рейтинг: 0 / 0
Заменить...
    #35294626
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А для проверки правильности можешь поискать базу улиц в прогах для налоговых отчетов по работникам, сам однажды как-то сталкивался там справочники улиц, домов подгружаются, возможно количество квартир в доме есть.

Справочники в открытом доступе должны быть, на сайтах налоговой или ПФ посмотри, если найдешь - сравни с ними свой справочник после причесывания.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Заменить...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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