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

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

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

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

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


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

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


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


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


Posted via ActualForum NNTP Server 1.4


Это я понимаю, просто вот в таком виде она до меня и дошла
...
Рейтинг: 0 / 0
05.05.2008, 15:07
    #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
05.05.2008, 15:17
    #35294623
Domani
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заменить...
Спасибо!!!!!!!!
...
Рейтинг: 0 / 0
05.05.2008, 15:19
    #35294626
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заменить...
А для проверки правильности можешь поискать базу улиц в прогах для налоговых отчетов по работникам, сам однажды как-то сталкивался там справочники улиц, домов подгружаются, возможно количество квартир в доме есть.

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


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