Вопрос № 107954: ACCESS2003;содержимое-оргХимия;наименования начинаются как с цифр, так и с букв;вопрос:как построитьORDER BY чтобы игнорировались цифры?...
Вопрос № 107.954
ACCESS2003;содержимое-оргХимия;наименования начинаются как с цифр, так и с букв;вопрос:как построитьORDER BY чтобы игнорировались цифры?
Отвечает: Тесленко Евгений Алексеевич
Здравствуйте, третьяков сергей данилович!
В модуль Вашей БД поместите функцию (в приложении), в запросе допишите ORDER BY noStartNum([оргХимия]);
Удачи Вам.
Евгений.
Отвечает: Nomadfromx2007
Здравствуйте, Третьяков Сергей Данилович! Скаже сразу же, я не знаю, как это лучше реализовать в Access, но вот как это можно реализовать в Oracle (может поможет): Часть ответа перенесена в Приложение. =Maxim V. Tchirkine=
Приложение:
Ответ отправил: Nomadfromx2007 (статус: 1-ый класс)
Ответ отправлен: 06.11.2007, 02:36
Отвечает: HookEst
Здравствуйте, третьяков сергей данилович!
Если все ведущие цифры отличны от нуля, и чтобы использовать только встроенные функции можно, например попробовать использовать то, что функция Val() возвращает число представленное всеми ведущими цифрами идущими подряд, например для Val("123АБВ456") - вернет число 123, Val("АБВ456") вернет 0.
тогда
можно составить выражение:
...ORDER BY IIf(Val([значение]) <> 0, Mid([значение], 1 + Len(Val([значение]))), [значение])
где [значение] - наш столбец.
т.е. осуществляется проверка: если Val([значение]) отлично от нуля, тогда применяем функцию Mid()- отрезаем от [значение] первые символы интерпретируемые Val()(т.е. цифры), иначе если Val([значение])=0, используем просто [значение].
или в реальном запросе, у меня Таблица2 со столбцом dog:
SELECT Таблица2.*
FROM Таблица2
ORDER BY IIf(Val([dog])<>0,Mid([dog],1+Len(Val([dog]))),[dog]);
Правда не тестировал эту конструкцию на всех возможных данных, да и возможно можно еще что оптимизировать, но как вариант...
Успехов.
Ответ отправил: HookEst (статус: Студент)
Ответ отправлен: 06.11.2007, 06:36