замена по условию в символьном поле | |
---|---|
ivcou Автор Сообщений: 3 Дата регистрации: 07.04.2011 |
Есть таблица, одно поле, 999 записей, по 8 символов.
1. считать первую запись, вырезать из поля 3 первые символа слева и заменить ими текущее значение. 2. перейти на вторую запись, проверить, если первые 3 символа слева уникальны во всей таблице то заменить ими текущее значение поля, если не уникально, то считать на 1 символ больше (считать из поля 4 первые символа слева и заменить ими текущее значение). 3. перейти на третью запись , проверить, если первые 3 символа слева уникальны во всей таблице то заменить ими текущее значение поля, если не уникально, то считать на 1 символ больше, если и это значение не уникально то считать из поля на 1 символ больше и заменить ими текущее значение). Нужно заменить значения по всем 999 записям таблицы. Например, было: Бааххххх Баблхххх Бабохххх Баборххх Баборчхх Бавххххх Бавкхххх Бавыхххх Багххххх должно получиться: Баа Бабл Бабо Бабор Баборч Бав Бавк Бавы Баг Помогите пожалуйста, если это возможно. Исправлено 1 раз(а). Последнее : ivcou, 07.04.11 23:07 |
Re: замена по условию в символьном поле | |
---|---|
krot_u Сообщений: 1760 Откуда: Екатеринбург Дата регистрации: 18.08.2005 |
Например
? STRTRAN('Бааххххх', 'х', '') |
Re: замена по условию в символьном поле | |
---|---|
1793 Сообщений: 290 Откуда: Озерск Дата регистрации: 17.10.2001 |
чё то типа
доработать рашпилем
|
Re: замена по условию в символьном поле | |
---|---|
pioner-v Сообщений: 1656 Дата регистрации: 01.05.2010 |
Ручками в Browse. 999 записей - это на час работы(с размышлениями и перерывом на чай . Это если разовая операция. Если это надо делать "регулярно", то используйте цикл, а в нем указанный Вами алгоритм. |
Re: замена по условию в символьном поле | |
---|---|
Владимир Максимов Сообщений: 14126 Откуда: Москва Дата регистрации: 02.09.2000 |
Отсортируйте таблицу по указанному полю (постройте индекс). Тогда вопрос поиска "дублей" - это просто сравнение текущей и последующей записей. Т.е. двух соседних записей.
|
Re: замена по условию в символьном поле | |
---|---|
Влад Колосов Сообщений: 22664 Откуда: Ростов-на-Дону Дата регистрации: 05.05.2005 |
Цитата:Что за инновации? SCAN .. ENDSCAN. ------------------ Совершенство - это не тогда, когда нельзя ничего прибавить, а тогда, когда нечего убавить. |
Re: замена по условию в символьном поле | |
---|---|
Igor VS Сообщений: 2193 Откуда: Харьков Дата регистрации: 26.01.2011 |
Тогда следующим вопросом будет "почему замена происходит только в одной записи" ------------------ Трехколесный пароход |
Re: замена по условию в символьном поле | |
---|---|
Влад Колосов Сообщений: 22664 Откуда: Ростов-на-Дону Дата регистрации: 05.05.2005 |
Отсортировать в порядке убывания. И алгоритм автора сделать немного более универсальным - начинать со второго пункта, а первый удалить. ------------------ Совершенство - это не тогда, когда нельзя ничего прибавить, а тогда, когда нечего убавить. Исправлено 1 раз(а). Последнее : Влад Колосов, 08.04.11 12:25 |
Re: замена по условию в символьном поле | |
---|---|
1793 Сообщений: 290 Откуда: Озерск Дата регистрации: 17.10.2001 |
дык Цитата: |
Re: замена по условию в символьном поле | |
---|---|
Влад Колосов Сообщений: 22664 Откуда: Ростов-на-Дону Дата регистрации: 05.05.2005 |
Скипы просто медленно работают... можно выбрать значение ключа первого элемента и сделать
scan for id <> first_id endscan ------------------ Совершенство - это не тогда, когда нельзя ничего прибавить, а тогда, когда нечего убавить. |
Re: замена по условию в символьном поле | |
---|---|
1793 Сообщений: 290 Откуда: Озерск Дата регистрации: 17.10.2001 |
я просто тупо перевел что хотел вопрошающий (практически дословно, ну от себя еще добавил for) про скорость в вопросе ничего не было Исправлено 1 раз(а). Последнее : 1793, 08.04.11 12:37 |
Re: замена по условию в символьном поле | |
---|---|
akvvohinc Сообщений: 4370 Откуда: Москва Дата регистрации: 11.11.2008 |
Цитата:
|
Re: замена по условию в символьном поле | |
---|---|
Влад Колосов Сообщений: 22664 Откуда: Ростов-на-Дону Дата регистрации: 05.05.2005 |
Да вот нет уверенности, что скан использует порядок сортировки по индексу, а не физический...
------------------ Совершенство - это не тогда, когда нельзя ничего прибавить, а тогда, когда нечего убавить. |
Re: замена по условию в символьном поле | |
---|---|
Igor VS Сообщений: 2193 Откуда: Харьков Дата регистрации: 26.01.2011 |
Есть уверенность. Мало того - если изменить значение поля, входящего в ключ активного индекса, так чтобы модифицированный ключ стал последним, то скан на этом и закончится. ------------------ Трехколесный пароход Исправлено 1 раз(а). Последнее : Igor VS, 08.04.11 18:22 |
Re: замена по условию в символьном поле | |
---|---|
ivcou Автор Сообщений: 3 Дата регистрации: 07.04.2011 |
Большое спасибо 1793!
Забыл сказать, список в базе уже сгруппирован, дублей там нет (но они могут появиться в процессе замены). Работает, но немного не так как нужно. Может ошибся в описании условий? замена :замена програм.:руками Баа :Баа Бабад :Баб (не убраны 2 лишних символа) Бабал :Баба (не убран 1 символ) Бабан :Бабан Бабар :Бабар Бабаш :Бабаш Бабен :Бабе (1 лишний символ) Бабеш :Бабеш Бабил :Баби (1 лишний символ) Бабин :Бабин Бабич :Бабич Бабл :Бабл Бабо :Бабо Бабр :Бабр Бабул :Бабу (1 лишний символ) Бабуц :Бабуц Бабч :Бабч Бабы :Бабы Бава :Бав (1 лишний символ) Бавк :Бавк Бавы :Бавы Багам :Баг (2 лишних символа) Исправлено 1 раз(а). Последнее : ivcou, 09.04.11 17:28 |
Re: замена по условию в символьном поле | |
---|---|
akvvohinc Сообщений: 4370 Откуда: Москва Дата регистрации: 11.11.2008 |
Цитата:Несомненно. Например, во второй записи про желаемое вами "Баб" нельзя сказать, что оно удовлетворяет вашему 2 условию: Цитата: Во всей таблице символы "Баб" не уникальны, а встречаются много раз. Поэтому в программе для нее берется "Бабад", которое действительно не встречается больше в таблице. Видимо, вам требуется проверять на уникальность не во всей таблице, а среди тех записей, которые уже обработаны (находятся выше текущей в списке). Или проверять во всех записях, но не 3 символа, а все 8 (после замены в текущей). Тогда:
Кроме того, вы сами в своем первом примере для 2-й строки почему-то написали "Бабл", а не "Баб", как следует из вашего второго примера. А добиться того, чтобы ваш второй пример сработал можно заменой двух строк в программе:
PS Да и цикл имеет смысл только до предпоследнего (7-го в вашем случае) символа. Исправлено 1 раз(а). Последнее : akvvohinc, 09.04.11 06:31 |
Re: замена по условию в символьном поле | |
---|---|
1793 Сообщений: 290 Откуда: Озерск Дата регистрации: 17.10.2001 |
комп НИКОГДА не ошибается (ну если рабочий) если Работает, но немного не так как нужно - ошибся в описании условий проверяется элементарно - тупо идем на 2 запись Бабад :Баб и проверяем почему не убраны 2 лишних символа уточняем условия |
Re: замена по условию в символьном поле | |
---|---|
ivcou Автор Сообщений: 3 Дата регистрации: 07.04.2011 |
Да, ошибся в условии, извиняюсь.
Большое спасибо akvvohinc. Теперь все работает как нужно. Еще и свои 4 ошибки ручной замены нашел, сравнивая результаты. |
© 2000-2024 Fox Club  |