powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Разобрать символьное поле
17 сообщений из 17, страница 1 из 1
Разобрать символьное поле
    #38414413
кот_2013
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. Есть таблица с полями ksg (символьный тип), fio.
В поле ksg содержит строку типа: 54036540375403854039540405404154043540465405054052541735417554050
Как разбить эту строку по 5 символов и в курсор вывести соответствия:
fio ksg (первые 5 символов)
fio ksg (вторые 5 символов)
fio ksg (третие 5 символов)
fio ksg (четвертые 5 символов) и т.д.
...
Рейтинг: 0 / 0
Разобрать символьное поле
    #38414425
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что именно не получается?

SUBSTR() - вырезать подстроку из строки
...
Рейтинг: 0 / 0
Разобрать символьное поле
    #38414430
кот_2013
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T, там разные строки некоторые у которых только 5 символов, некоторые у которых по 15.. вы не подскажете какой-нибудь универсальный способ чтобы разбирать такие строки
...
Рейтинг: 0 / 0
Разобрать символьное поле
    #38414433
кот_2013
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
до утра нужно сделать, а я не пойму как
...
Рейтинг: 0 / 0
Разобрать символьное поле
    #38414456
кот_2013
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
никто не знает как делать? хотя бы подскажите если через substr Можно как сделать
...
Рейтинг: 0 / 0
Разобрать символьное поле
    #38414470
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кот_2013Dima T, там разные строки некоторые у которых только 5 символов, некоторые у которых по 15.. вы не подскажете какой-нибудь универсальный способ чтобы разбирать такие строки
В цикле, пока строка не кончится. Как-то так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
i = 1
lcKsg = '12345678900987654321'
do while .T.
    lcKsgMini = substr(lcKsg, i, 5)
    if empty(lcKsgMini)
        exit
    endif
    i = i + 5
    ? lcKsgMini
enddo
...
Рейтинг: 0 / 0
Разобрать символьное поле
    #38414473
кот_2013
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
строки такого типа
5403654037540385403954040540425404354044
54065540995410054101540655409954101

разбить по 5 символов и занести в курсор в таком формате
fio ksg (первые 5 символов из 5403654037540385403954040540425404354044)
fio ksg (вторые 5 символов из 5403654037540385403954040540425404354044)
fio ksg (третьи 5 символов из 5403654037540385403954040540425404354044)
и так для всей таблицы
...
Рейтинг: 0 / 0
Разобрать символьное поле
    #38414475
кот_2013
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T, таких строк много же в таблице. Для всей таблицы нельзя сразу?
...
Рейтинг: 0 / 0
Разобрать символьное поле
    #38414491
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кот_2013Dima T, таких строк много же в таблице. Для всей таблицы нельзя сразу?
Можно, сделай SCAN по таблице, ты на фоксе писать умеешь?
...
Рейтинг: 0 / 0
Разобрать символьное поле
    #38414492
кот_2013
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
такая таблица.. надо каждые 5 символов из поля ksg сопоставить с fio и выгрузить в курсор. и таких строк много я просто урезал таблицу
...
Рейтинг: 0 / 0
Разобрать символьное поле
    #38414496
кот_2013
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
умею но не настолько сильно.. со scan вечно проблемы бывают у меня. и не понял я как lcKsgMini в курсор выгрузить
...
Рейтинг: 0 / 0
Разобрать символьное поле
    #38414515
кот_2013
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
так пишу, кажется по всей таблице находит, но как связать полученные подстроки с fio (
P0030041 - это таблица с полями fio и ksg

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
SELECT P0030041
SCAN 
i = 1
lcKsg = P0030041.ksg
do while .T.
    lcKsgMini = substr(lcKsg, i, 5)
    if empty(lcKsgMini)
        exit
    endif
    i = i + 5
    ? lcKsgMini
enddo
ENDSCAN 
...
Рейтинг: 0 / 0
Разобрать символьное поле
    #38414521
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Похоже что не умеешь, раз элементарные вещи сделать не получается. Как-то так
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
* Создаем курсор под результат
sele 0
create cursor res (fio c(100), ksg c(5))
* Перебираем все записи
sele MyTable
scan
  i = 1
  * разбиваем KSG по 5
  do while .T.
      lcKsgMini = substr(MyTable.Ksg, i, 5)
      if empty(lcKsgMini)
          exit
      endif
      i = i + 5
      insert into res (fio, ksg) values (MyTable.fio, lcKsgMini)
   enddo
endscan
sele res
brow


замени MyTable на имя твоей таблицы
...
Рейтинг: 0 / 0
Разобрать символьное поле
    #38414541
кот_2013
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T, Спасибо, как раз то что нужно было. Долгих лет жизни вам!
...
Рейтинг: 0 / 0
Разобрать символьное поле
    #38414571
кот_2013
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
можно еще 1 вопрос. получили курсор res и полями fio и ksg. Теперь есть таблица issled с полями Name_issl,shifr. Надо из таблицы issled выбрать все записи у которых в поле shifr встречаются коды которые есть в res.ksg

такой запрос из всех записей только одну запись вывел в курсор curs1 я правильно хоть создать запрос? из стольких записей одну же не может выбрать

Код: sql
1.
2.
3.
SELECT Name_issl,shifr,price FROM issled WHERE issled.shifr=res.ksg INTO CURSOR curs1
SELECT curs1
BROWSE 
...
Рейтинг: 0 / 0
Разобрать символьное поле
    #38414581
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
res должен быть указан в запросе
Код: sql
1.
SELECT Name_issl,shifr,price FROM issled , res WHERE issled.shifr=res.ksg INTO CURSOR curs1


лучше так
Код: sql
1.
SELECT Name_issl,shifr,price FROM issled WHERE issled.shifr in (select ksg from res) INTO CURSOR curs1
...
Рейтинг: 0 / 0
Разобрать символьное поле
    #38414624
кот_2013
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T, ой, действительно забыл указать res в запросе после from.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Разобрать символьное поле
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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