:: Visual Foxpro, Foxpro for DOS
как обеспечить точное совпадение в перечислении SQL
Артём

Сообщений: 116
Дата регистрации: 23.04.2001
Нужно, чтобы запрос (упрощенный )
SELECT coin1 FROM Info WHERE (ALLTRIM(coin1) in ('usd','rur'))
выдавал только 2 значения 'usd' и 'rur'. даже, если в таблице есть значения 'u','us' и 'ru'
Пока не получается
set exact on как то не влияет, вроде
помогите, пожалуйста



Исправлено 1 раз(а). Последнее : Артём, 28.06.19 23:47
Ratings: 0 negative/0 positive
Re: как обеспечить точное совпадение в перечислении SQL
of63

Сообщений: 25253
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
По быстрому, если ALLTRIM приделал, то можно
WHERE ALLTRIM(coin1)+" " in ('usd ','rur ')
А потом подумать
Ratings: 0 negative/1 positive
Re: как обеспечить точное совпадение в перечислении SQL
Артём

Сообщений: 116
Дата регистрации: 23.04.2001
of63
По быстрому, если ALLTRIM приделал, то можно
WHERE ALLTRIM(coin1)+" " in ('usd ','rur ')
А потом подумать
Спасибо, так вполне устраивает. Ура!
Ratings: 0 negative/0 positive
Re: как обеспечить точное совпадение в перечислении SQL
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
SET ANSI ON


------------------
WBR, Igor
Ratings: 0 negative/1 positive
Re: как обеспечить точное совпадение в перечислении SQL
Артём

Сообщений: 116
Дата регистрации: 23.04.2001
Igor Korolyov
SET ANSI ON
Спасибо! Теперь я знаю все!
Ratings: 0 negative/0 positive
Re: как обеспечить точное совпадение в перечислении SQL
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
ru.wikipedia.org


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: как обеспечить точное совпадение в перечислении SQL
Ydin
Автор

Сообщений: 7648
Откуда: Киев
Дата регистрации: 16.12.2005
Igor Korolyov
SET ANSI ON
Вот это просто плохое в VFP. Но уже поздно говорить. Должно было на уровне языка иметь 2 вида сравнения - точное или типа почти, типа слева
Считайте, что я этого не говорил,это мои эмоции. Но сам я это решил, причем хреново решил, в своем Framework'e.
Глобально не решил



Исправлено 2 раз(а). Последнее : Ydin, 30.06.19 19:12
Ratings: 0 negative/1 positive
Re: как обеспечить точное совпадение в перечислении SQL
Аспид

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
Ydin
Вот это просто плохое в VFP.
+100500
Ratings: 0 negative/0 positive
Re: как обеспечить точное совпадение в перечислении SQL
of63

Сообщений: 25253
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Нормальное это, а не плохое. Маленький нюанс в использовании сленга SQL-FOX (ведь это не настоящий SQL-диалект, типа оракла, так, местный синтаксис, естественно фоксоязычноподдерживаемый (хоть фоксовые функции можно применять). Практически это произвольные фоксовые выражения, вызываемые в синтаксисе популярного синтаксиса SQL. Устарел, конечно,синтаксис, нет новомодных фигней, но пока для дебильных отчетов хватает. Недебильных отчетов родное государство пока не спрашивает, уже хорошо.
Ratings: 0 negative/0 positive
Re: как обеспечить точное совпадение в перечислении SQL
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Не понял. В фоксе именно и есть 2 типа сравнения. И для "просто сравнений" они решаются при помощи указания либо одиночного либо двойного символа равно (в SQL запросах), однако для "неявных" сравнений, как в случае с IN уже приходится использовать SET.
И да, "точное/неточное" в SQL запросах (управляемое SET ANSI) и "точное/неточное" в обычном процедурном коде (управляемое SET EXACT) - это две большие разницы.
А вообще в "больших" СУБД есть здоровенная такая заморочка со сравнением строк - последовательности сортировки (collation), нормализация юникода, игнорирование регистра, игнорирование "акцентированных" символов - там сам чёрт ногу сломит, порой И это даже не приближаясь к вопросам полнотекстового поиска


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: как обеспечить точное совпадение в перечислении SQL
Ydin
Автор

Сообщений: 7648
Откуда: Киев
Дата регистрации: 16.12.2005
2 ИК.
Я про свой Framework. Там вся бизнес логика вынесена за то, что в Exe-файле
А там можно менять SET ANSI в любом месте и это на весь сеанс.
В реальной жизни когда в проекте неск. программистов и каждый может поменять SET ANSI, это стремно.
Поэтому мне не нравится этот Set ANSI.
Да хоть и один пишет! Вот кнопка - вызов чего то. Отладили, оттестировали.
Через год вставляют новую кнопку, где то в коде меняя Set ANSI. Отладили эту кнопку.
Теперь, если с этой кнопкой работали в этом сеансе, то потом первая кнопка может не работать. Но ошибку не выдает. И только юзер потом замечает.
И то не сразу. Пару отчетов неверных выдал.
Пишет нам, а мы не ловим эту ошибку...
Она дорого обходится. Говорим, плавающая ошибка.
Нас спасает то, что у нас мало кто знает эту команду.
В принципе, надо запомнить старое значение, чтобы потом восстановить.
Кто это делает?



Исправлено 1 раз(а). Последнее : Ydin, 01.07.19 18:01
Ratings: 0 negative/0 positive
Re: как обеспечить точное совпадение в перечислении SQL
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Ydin
В принципе, надо запомнить старое значение, чтобы потом восстановить.
Кто это делает?
Любой адекватный программист

Да, к сожалению эта настройка (как и многие другие) по сути есть private переменная (область её определения - datasession) со всеми вытекающими последствиями. И для превращения подобных set в локальные сущности без запомнил-поработал-вернул не обойтись. Ну или полностью рули своими скоупами (т.е. в данном случае датасессиями) - считая что никто не влезет внутрь и не передёрнет никаких настроек. Организационно пытаясь побороть системную проблему.


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: как обеспечить точное совпадение в перечислении SQL
Ydin
Автор

Сообщений: 7648
Откуда: Киев
Дата регистрации: 16.12.2005
Любой адекватный программист
То есть не любой
Ratings: 0 negative/0 positive
Re: как обеспечить точное совпадение в перечислении SQL
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Ydin
То есть не любой
Ну а зачем беспокоится за ид... неадекватного то


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: как обеспечить точное совпадение в перечислении SQL
Ydin
Автор

Сообщений: 7648
Откуда: Киев
Дата регистрации: 16.12.2005
Они мне говорят, что ошибка у меня в моем Фреймворке. Я долго ищу, потом им говорю, что не у меня.
И сразу забыли все



Исправлено 1 раз(а). Последнее : Ydin, 01.07.19 21:08
Ratings: 0 negative/0 positive
Re: как обеспечить точное совпадение в перечислении SQL
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Если фреймворк достаточно открыт и позволяет произвольный код вносить да так что это повлияет на основную функциональность, то это таки твоя проблема - либо обеспечить такую изоляцию системной части, что подобными глупостями её не поломать, либо документировать все подобные "нюансы" (гораздо быстрее "не тот" SET COLLATE всё сломает чем SET ANSI).
Честно говоря я не уверен что для кода фреймворка будет иметь значение эта установка. А прикладной код - так за него должен не автор фреймворка отвечать, а тот кто этот код писал. Ну и да, я упомянул про способы минимизации ущерба - приватные датасессии сводят "поломку" к единственной датасессии (единственной форме).


------------------
WBR, Igor
Ratings: 0 negative/1 positive
Re: как обеспечить точное совпадение в перечислении SQL
Ydin
Автор

Сообщений: 7648
Откуда: Киев
Дата регистрации: 16.12.2005
Да, все именно так
Ratings: 0 negative/0 positive


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

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

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