2009-03-09 4 views
1

У меня есть поле VARCHAR в таблице Firebird 2.0, которая может содержать буквенно-цифровые символы. Мне нужно, чтобы отсортировать данные по этому полю, сортировка все значения, содержащие только числа как числа, и сортировать все другие значения 0.Firebird определяет, есть ли строка во всех номерах

Например, если у меня есть четыре значения,

"1", "2", "10", "string", 

мне нужно разбирайтесь, как

"string", "1", "2", "10". 

по умолчанию рода строковых родов, как

"1", "10", "2", "string". 

Я думал о литье значений в INTEGER, но я получаю ошибку преобразования в строках, что, конечно, правильно. Как обойти это?

ответ

1

Вы можете использовать встроенную функцию LPAD:

SELECT 
    ... 
    <number_field>, 
    ... 
FROM 
    ... 
ORDER BY 
    LPAD(<numer_field>, 10) 
0

Создайте дополнительный столбец, в котором вы сохраняете сортируемые значения, используя ваше приложение. Затем выполните сортировку на основе этого столбца. Если вы хотите, чтобы ваши номера были в конце, тогда перед цифрами вставьте «ZZZ» (или «ÜÜÜ» или все, что является последним символом на вашем языке). Например Format ("ZZZ% 012d", my_num);