:: Visual Foxpro, Foxpro for DOS
Как отобрать записи без звездочек?
Burn

Сообщений: 5643
Откуда: Днепр
Дата регистрации: 02.01.2002
Сегодня озадачили вопросом - в результате недосмотра при расчете произошло деление на ноль и в таблицу загнали звездочки.
Как отобрать записи без звездочек? Какой функцией?

Ага. Один вариант нашел:
SELECT * FROM table WHERE Field1<>1/0

А других вариантов нет?


------------------
В борьбе бобра с козлом побеждает бобро




Исправлено 1 раз(а). Последнее : Burn, 07.09.17 12:51
Ratings: 0 negative/0 positive
Re: Как отобрать записи без звездочек?
of63

Сообщений: 25244
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Поле таблицы переименовать в тип C (лучше HEX-редактором)
Ratings: 0 negative/0 positive
Re: Как отобрать записи без звездочек?
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
А если по нему ещё и индекс есть? Зачем такие крайние меры то


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Как отобрать записи без звездочек?
akvvohinc

Сообщений: 4216
Откуда: Москва
Дата регистрации: 11.11.2008
Burn
Как отобрать записи без звездочек? Какой функцией?

Если именно функцией, то, например:
TRANSFORM(Field1)!='*'

А без функции можно еще сравнивать с каким-то заведомо большим числом, например, 10^100. Поле со звездочками будет больше него, нормальные - меньше.
Ratings: 0 negative/0 positive
Re: Как отобрать записи без звездочек?
of63

Сообщений: 25244
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Igor Korolyov
А если по нему ещё и индекс есть? Зачем такие крайние меры то
Так с ними работать-то не надо скорее всего, а поменять на "хорошие" значения.

2 akvvohinc
Доб. Да, действительно работает...
CREATE CURSOR aaa (nnn N(2))
INSERT INTO aaa (nnn) VALUES (123)
? nnn && **
? VARTYPE(nnn) && N
? TRANSFORM(nnn) && **
? nnn>1000 && .T.
? nnn>0 && .T.
? nnn+1 && ***
? nnn+99 && ***
? nnn+100 && ****
? TRANSFORM(nnn+1) && ***



Исправлено 1 раз(а). Последнее : of63, 07.09.17 17:07
Ratings: 0 negative/0 positive
Re: Как отобрать записи без звездочек?
Foxtrot

Сообщений: 3408
Откуда: Куда:
Дата регистрации: 25.04.2003
а что значит "работать" в данном случае?


------------------
Мойте ноги, моя ноги вы моете и руки
Ratings: 0 negative/0 positive
Re: Как отобрать записи без звездочек?
of63

Сообщений: 25244
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Ну... применить это значение в "рабочей" программе.
Ratings: 0 negative/0 positive
Re: Как отобрать записи без звездочек?
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
of63
Так с ними работать-то не надо скорее всего, а поменять на "хорошие" значения.
Так что мешает это проделать БЕЗ низкоуровневого шаманства, при том потенциально приводящего к серьёзным проблемам если таки будет индекс по такому полю...


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Как отобрать записи без звездочек?
of63

Сообщений: 25244
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Да ничё не мешает, я до такого способа недопер, хотя искал, когда надо было (найти бракованые записи в полях N). Все числовые операции с этими значениями (***) выполняются как обычно (хотя рано или поздно прога вешается, не помню на какой примере какой операции с ним). Сравнить с большим числом не догадался. Ты-то с раннего детства, видимо, практикуешь именно этот способ, а я только что узнал )
Ratings: 0 negative/0 positive
Re: Как отобрать записи без звездочек?
lulgu
Автор

Сообщений: 1838
Дата регистрации: 30.11.2016
of63
Все числовые операции с этими значениями (***) выполняются как обычно (хотя рано или поздно прога вешается, не помню на какой примере какой операции с ним).

Навскидку, вроде и такое условие работает:
SELECT * FROM aaa WHERE !(nnn = nnn+1)



Исправлено 1 раз(а). Последнее : lulgu, 07.09.17 19:27
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 22 (Гостей: 22)

© 2000-2024 Fox Club 
Яндекс.Метрика