04.07.2006, 18:13 | #1 |
MCTS
|
Условие в запросе по отбору чисел
Всем доброе время суток!
Хочу добиться следующего: удалить записи в таблице по условию, что в поле содержится что-либо, кроме чисел. В цикле по записям можно, кончено, использовать match(":d",...). А можно ли добиться аналогичного результата с использованием delete_from? При использовании match в запросе выдается ошибка, я так понимаю, нельзя использовать в условии функции. Через оператор like пока не могу понять, как можно сделать, так как не получилось использовать символьные классы (типа like "a..z"). Помогите, пожалуйста.Заранее спасибо! |
|
05.07.2006, 00:50 | #2 |
Участник
|
Да, боюсь, что функцией типа strRem или match воспользоваться не удастся.
Здесь, или while select, или, как вариант, следующее решение: (правда не очень элегантное и узкопрофильное) Можно создать табличку с числами, скажем, от минус миллиарда до + миллиарда, смотря какие у вас там числа могут быть. И not exist join использовать по этому полю с ключевым из этой таблички. ЗЫ. Правда скорость работы сильно будет зависеть от количества записей в вашей табличке этой Последний раз редактировалось kashperuk; 05.07.2006 в 01:00. |
|
05.07.2006, 11:19 | #3 |
Участник
|
Насколько я в курсе, в AXAPTA оператор LIKE не может задавать диапазоны. Т.е. нечто вроде "a..z" задать в принципе нельзя. Можно попробовать использовать набро условий объединенных через ИЛИ
PHP код:
|
|
05.07.2006, 11:22 | #4 |
Участник
|
Насколько я в курсе, в AXAPTA оператор LIKE не может задавать диапазоны. Т.е. нечто вроде "a..z" задать в принципе нельзя. Можно попробовать использовать набор условий объединенных через ИЛИ
PHP код:
|
|
05.07.2006, 12:23 | #5 |
Administrator
|
Не нужно забывать - что SQL в Аксапте весьма урезанный (по сравнению с T-SQL), а также что оператор delete_from появился всего лишь с 3.0 (т.е. еще его не дорабатывали), а также нужно помнить о том, что согласно документации - если перекрыт метод delete на таблице - то delete_from работает абсолютно также как while-select с delete построчно. Поэтому вполне логично что в Аксапте нельзя задать такое условие. Даже отобрать записи с таким условием нельзя. Поэтому единственный вариант который имеет место быть - это match внутри цикла while-select
__________________
Возможно сделать все. Вопрос времени |
|
|
За это сообщение автора поблагодарили: cherv (1). |
05.07.2006, 13:20 | #6 |
Участник
|
Если данные либо буквы, либо числа, то может прокатить косвенное определение через упорядочивание: delete_from where field < "a"
Но это только если .... С уважением, itfs. |
|
05.07.2006, 14:11 | #7 |
Участник
|
2 sukhanchik: delete_from есть в Ax 2.5. Или что вы имели ввиду в фразе "т.е. еще его не дорабатывали"?
Ax 2.5 SP1 С уважением, Сергей |
|