Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как отобрать только числа из поля varchar ?  [new]
StepaCV
Member

Откуда:
Сообщений: 43
Добрый вечер! В некой таблице, в поле «VALUE» - тип varchar , в строках содержатся данные о суммах (т.е. циферки) и просто разные настройки (т.е. букавки). Помогите пожалуйста неграмотному написать простой запрос, который бы возвращал только суммы (цифры). Заранее благодарен. Есть смешное начало:

select * from _1sconst (nolock)
where convert(int, _1sconst.VALUE) <> 0
17 сен 09, 20:29    [7675977]     Ответить | Цитировать Сообщить модератору
 Re: Как отобрать только числа из поля varchar ?  [new]
iljy
Member

Откуда:
Сообщений: 8711
StepaCV,

ваш запрос выдаст ошибку на первой же нецифровой строке. Смотрите на ISNUMERIC .
17 сен 09, 20:32    [7675988]     Ответить | Цитировать Сообщить модератору
 Re: Как отобрать только числа из поля varchar ?  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5111
посмотрите ф-ю isnumeric

--------------------------------------------------------------
Дьявол кроется в деталях.
17 сен 09, 20:35    [7675994]     Ответить | Цитировать Сообщить модератору
 Re: Как отобрать только числа из поля varchar ?  [new]
StepaCV
Member

Откуда:
Сообщений: 43
Супер, спасибо. Только у меня бывают сумы с копейками, типа: 29.05 Что делать не посоветуете?

select * from _1sconst (nolock)
where ISNUMERIC(_1sconst.VALUE) = 1
AND convert(int, _1sconst.VALUE) <> 0

Server: Msg 245, Level 16, State 1, Line 1
Syntax error converting the varchar value '29.05' to a column of data type int.
17 сен 09, 20:44    [7676022]     Ответить | Цитировать Сообщить модератору
 Re: Как отобрать только числа из поля varchar ?  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
https://www.sql.ru/forum/actualthread.aspx?tid=422856#4076052
17 сен 09, 22:38    [7676217]     Ответить | Цитировать Сообщить модератору
 Re: Как отобрать только числа из поля varchar ?  [new]
StepaCV
Member

Откуда:
Сообщений: 43
Спасибо, это конечно – выход. Но грамотно ли это?
18 сен 09, 09:50    [7676980]     Ответить | Цитировать Сообщить модератору
 Re: Как отобрать только числа из поля varchar ?  [new]
Le Peace
Member

Откуда: Москва
Сообщений: 8969
StepaCV
Спасибо, это конечно – выход. Но грамотно ли это?
Хранить числа в строковых полях? Конечно, неграмотно.
18 сен 09, 10:04    [7677072]     Ответить | Цитировать Сообщить модератору
 Re: Как отобрать только числа из поля varchar ?  [new]
StepaCV
Member

Откуда:
Сообщений: 43
Обратите внимание на название таблицы! Это 1С-овская )
18 сен 09, 10:08    [7677102]     Ответить | Цитировать Сообщить модератору
 Re: Как отобрать только числа из поля varchar ?  [new]
StepaCV
Member

Откуда:
Сообщений: 43
Всем спасибо, я разобрался.
Нужно было конвертировать не в INT, а в FLOAT.

select * from _1sconst (nolock)
where ISNUMERIC(_1sconst.VALUE) = 1
AND convert(float, _1sconst.VALUE) <> 0
18 сен 09, 10:30    [7677220]     Ответить | Цитировать Сообщить модератору
 Re: Как отобрать только числа из поля varchar ?  [new]
iljy
Member

Откуда:
Сообщений: 8711
StepaCV,

float - тип неточный, и сравнивать его на равенство-неравенство - совсем неграмотно.
18 сен 09, 12:05    [7678109]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить