powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Определить длину записи в одном столбце
14 сообщений из 14, страница 1 из 1
Определить длину записи в одном столбце
    #39032927
kolhoz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день. Есть таблица с полями spolis и npolis.

В столбце spolis могут быть такие данные:
1. серия состоящая из трех символов типа КАГ, ШАМ
2. может не быть ничего

в столбце npolis может быть все что угодно разной длины

Как сделать следующую вещь:
Выбрать записи у которых в поле spolis количество символов = 3
И для этих записей в поле npolis сделать такое: начиная с конца оставить 7 символов и добавить в начало 00.

Т.е. есть к примеру запись

КОЛ - spolis
32434 № КОЛ 67885423234 - npolis.
здесь npolis привести к виду - 005423234
...
Рейтинг: 0 / 0
Определить длину записи в одном столбце
    #39032938
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
select *, '00' + right(alltrim(npolis), 7) as npolis2 from MyTable where len(alltrim(spolis)) = 3
...
Рейтинг: 0 / 0
Определить длину записи в одном столбце
    #39032964
kolhoz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T, Спасибо, но если в поле npolis есть такая запись 1525 № 160343, то в поле npolis2 получается такой результат 00 160343. Т.е. пробел остается перед 1. Как это можно исправить?
...
Рейтинг: 0 / 0
Определить длину записи в одном столбце
    #39032991
SoftwareBoy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
1.
select *, '00' + padl(alltrim(npolis),7,'0') as npolis2 from MyTable where len(alltrim(spolis)) = 3
...
Рейтинг: 0 / 0
Определить длину записи в одном столбце
    #39032994
kolhoz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите пожалуйста запросом лишние символы типа "№", "-", " " заменяю на 0 так
Код: sql
1.
2.
3.
SELECT *, CHRTRAN(npolis2,'№','0') FROM table
SELECT *, CHRTRAN(npolis2,' ','0') FROM table
SELECT *, CHRTRAN(npolis2,'-','0') FROM table



А можно это в одном выражении сделать чтобы три запроса не писать?
...
Рейтинг: 0 / 0
Определить длину записи в одном столбце
    #39033008
Crispy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
1.
SELECT *, CHRTRAN(npolis2,'№ -','0') FROM table
...
Рейтинг: 0 / 0
Определить длину записи в одном столбце
    #39033017
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolhozDima T, Спасибо, но если в поле npolis есть такая запись 1525 № 160343, то в поле npolis2 получается такой результат 00 160343. Т.е. пробел остается перед 1. Как это можно исправить?
Код: sql
1.
padl(right(alltrim(npolis), 7), 9, '0')
...
Рейтинг: 0 / 0
Определить длину записи в одном столбце
    #39033019
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Crispy
Код: sql
1.
SELECT *, CHRTRAN(npolis2,'№ -','0') FROM table


Нулей надо три, по одному на каждый символ
Код: sql
1.
CHRTRAN(npolis2,'№ -','000')
...
Рейтинг: 0 / 0
Определить длину записи в одном столбце
    #39033022
kolhoz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Crispy, я так писал, почему-то если в выражении встречается такой случай " № ", то только № заменяется на 0, а пробелы игноригуются
...
Рейтинг: 0 / 0
Определить длину записи в одном столбце
    #39033029
kolhoz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T, а можно комментарий что делается тут

padl(right(alltrim(npolis), 7), 9, '0')
...
Рейтинг: 0 / 0
Определить длину записи в одном столбце
    #39033042
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolhozDima T, а можно комментарий что делается тут

padl(right(alltrim(npolis), 7), 9, '0')
alltrim(npolis) - убирает начальные/конечные пробелы npolis. В данном случае можно использовать rtrim() - убирает конечные пробелы. Работает чуть быстрее.
right(..., 7) берет последние 7 символов, если их меньше, то сколько есть
padl(..., 9, '0') добивает нулями слева до 9 символов
...
Рейтинг: 0 / 0
Определить длину записи в одном столбце
    #39033043
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolhozCrispy, я так писал, почему-то если в выражении встречается такой случай " № ", то только № заменяется на 0, а пробелы игноригуются
см. сюда 18044672
...
Рейтинг: 0 / 0
Определить длину записи в одном столбце
    #39033046
T1gRa_NT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У временных свидетельств стали появляться буквенные серии, если не сложно сказать то в какой области?
kolhozDima T, а можно комментарий что делается тут

padl(right(alltrim(npolis), 7), 9, '0')

PADL() Возвращает в виде символьной строки, заданную первым аргументом строку, дополненную третьим аргументом до длины, заданной вторым аргументом, причем вставляет символы-заполнители слева.

alltrim(npolis) - берет значение из номера полиса без начальных и концевых пробелов.
right(alltrim(npolis), 7) - из значения номера полиса без начальных и концевых пробелов справа берет 7 символов.
padl(right(alltrim(npolis), 7), 9, '0') - изменяет размерность 7 символов полученных ранее до 9 и заполняет слева указанным символы-заполнителем до размерности 9.
Т.е. если вы укажите размерность 11 или 16 то и получите заполнение слева 0 до этой размерности.
...
Рейтинг: 0 / 0
Определить длину записи в одном столбце
    #39033052
kolhoz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спасибо, получилось так как хотел
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Определить длину записи в одном столбце
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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