Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Из char to (int, real, float) и загвоздка (ASE 12.5) / 6 сообщений из 6, страница 1 из 1
24.09.2008, 11:14
    #35556164
Imperous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из char to (int, real, float) и загвоздка (ASE 12.5)
Доброго всем дня!

Есть табличка, например поле "my_data" - имеет тип char, в это поле писали все что не лень, и слова и даты и цифры (естественно как строковые).
Теперь появилась необходимость вытянуть значения из таблицы (других полей) с условием что в поле my_data значения 20 или 25

пишу запрос:
Код: plaintext
1.
2.
select * 
from my_table 
where convert(int, my_data) in ( 20 , 25 )
также пробую меньять convert(real, my_data) , convert(float, my_data)

при int - ase говорит что не может преобразовать какие-то длинные числа
при float и real - ругается что он даты не может преобразовать в эти числа.

как этого избежать?

зы
далее мне необходимо сравнивать большие массивы данных

заранее спасибо.
...
Рейтинг: 0 / 0
24.09.2008, 17:39
    #35557715
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из char to (int, real, float) и загвоздка (ASE 12.5)
Ну например так:
Код: plaintext
select (case when my_data like "%[^a-zA-Z]%" then convert(int null  my_data) else null end)
...
Рейтинг: 0 / 0
26.09.2008, 07:00
    #35561061
golsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из char to (int, real, float) и загвоздка (ASE 12.5)
Код: plaintext
1.
2.
3.
select (case 
          when ltrim(rtrim(my_data)) like "%[^0-9]%" then null
          else convert(int,  my_data) 
        end)
...
Рейтинг: 0 / 0
26.09.2008, 09:57
    #35561253
Imperous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из char to (int, real, float) и загвоздка (ASE 12.5)
golsa
Код: plaintext
1.
2.
3.
select (case 
          when ltrim(rtrim(my_data)) like "%[^0-9]%" then null
          else convert(int,  my_data) 
        end)

наверное все же первый вариант, потому как мне как раз и нужны цифры
...
Рейтинг: 0 / 0
26.09.2008, 10:10
    #35561282
golsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из char to (int, real, float) и загвоздка (ASE 12.5)
Первый вариант попробует конвертить любое поле содержащее символ отличный от латинских букв. Например: 20/09/2008 или 2_1.
Мой вариант конвертит только поля содержащие цифры идущие подряд, иначе null
...
Рейтинг: 0 / 0
30.09.2008, 19:09
    #35568387
Maxxonchik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из char to (int, real, float) и загвоздка (ASE 12.5)
Я вообще не понял, зачем в данном случае что-то конвертить? В рамках описанной Вами задачи (т.е. просто для сравнения при запросе) вполне подойдет вариант:
Код: plaintext
1.
2.
select * 
from my_table 
where my_data in ("20","25")
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Из char to (int, real, float) и загвоздка (ASE 12.5) / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]