AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 04.07.2006, 18:13   #1  
cherv is offline
cherv
MCTS
MCBMSS
1C
 
88 / 25 (1) +++
Регистрация: 24.05.2006
Условие в запросе по отбору чисел
Всем доброе время суток!
Хочу добиться следующего:
удалить записи в таблице по условию, что в поле содержится что-либо, кроме чисел.
В цикле по записям можно, кончено, использовать match(":d",...). А можно ли добиться аналогичного результата с использованием delete_from?
При использовании match в запросе выдается ошибка, я так понимаю, нельзя использовать в условии функции.
Через оператор like пока не могу понять, как можно сделать, так как не получилось использовать символьные классы (типа like "a..z").
Помогите, пожалуйста.Заранее спасибо!
Старый 05.07.2006, 00:50   #2  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Да, боюсь, что функцией типа strRem или match воспользоваться не удастся.
Здесь, или while select, или, как вариант, следующее решение: (правда не очень элегантное и узкопрофильное)
Можно создать табличку с числами, скажем, от минус миллиарда до + миллиарда, смотря какие у вас там числа могут быть. И not exist join использовать по этому полю с ключевым из этой таблички.

ЗЫ. Правда скорость работы сильно будет зависеть от количества записей в вашей табличке этой

Последний раз редактировалось kashperuk; 05.07.2006 в 01:00.
Старый 05.07.2006, 11:19   #3  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,692 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Насколько я в курсе, в AXAPTA оператор LIKE не может задавать диапазоны. Т.е. нечто вроде "a..z" задать в принципе нельзя. Можно попробовать использовать набро условий объединенных через ИЛИ

PHP код:
where
    field like 
"*a*" ||
    
field like "*b*" ||
    
field like "*c*" 
Но, окажется ли это быстрее простого сканирования - не уверен.
Старый 05.07.2006, 11:22   #4  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,692 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Насколько я в курсе, в AXAPTA оператор LIKE не может задавать диапазоны. Т.е. нечто вроде "a..z" задать в принципе нельзя. Можно попробовать использовать набор условий объединенных через ИЛИ

PHP код:
where
    field like 
"*a*" ||
    
field like "*b*" ||
    
field like "*c*" 
Но, окажется ли это быстрее простого сканирования - не уверен.
Старый 05.07.2006, 12:23   #5  
online
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,312 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Не нужно забывать - что SQL в Аксапте весьма урезанный (по сравнению с T-SQL), а также что оператор delete_from появился всего лишь с 3.0 (т.е. еще его не дорабатывали), а также нужно помнить о том, что согласно документации - если перекрыт метод delete на таблице - то delete_from работает абсолютно также как while-select с delete построчно. Поэтому вполне логично что в Аксапте нельзя задать такое условие. Даже отобрать записи с таким условием нельзя. Поэтому единственный вариант который имеет место быть - это match внутри цикла while-select
__________________
Возможно сделать все. Вопрос времени
За это сообщение автора поблагодарили: cherv (1).
Старый 05.07.2006, 13:20   #6  
itfs is offline
itfs
Участник
 
277 / 43 (2) +++
Регистрация: 18.07.2005
Адрес: Moscow
Если данные либо буквы, либо числа, то может прокатить косвенное определение через упорядочивание: delete_from where field < "a"
Но это только если ....

С уважением, itfs.
Старый 05.07.2006, 14:11   #7  
Atani is offline
Atani
Участник
 
77 / 15 (1) ++
Регистрация: 25.07.2003
Адрес: г. Королёв М.О.
2 sukhanchik: delete_from есть в Ax 2.5. Или что вы имели ввиду в фразе "т.е. еще его не дорабатывали"?

Ax 2.5 SP1

С уважением, Сергей
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как в динамическом запросе использовать исловие OR между двумя полями? yooshi DAX: Программирование 12 07.08.2009 16:34
Условие по агрегатам в запросе cherv DAX: Программирование 5 14.08.2006 14:55
Глючит условие в запросе Sada DAX: Программирование 5 28.04.2006 05:19
Условие на поле NotEmpty Logger DAX: Программирование 3 12.05.2005 12:32
Сортировка в запросе "В Наличии" linney DAX: Программирование 16 20.01.2005 20:01

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 11:43.