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

Откуда: Белгород
Сообщений: 458
Как в функции использовать try catch ?
В документации пишется что нельзя использовать....
А как быть тогда???

Хотелось бы в функции сделать конвертацию, если конвертация не проходит, возвращалось бы определенное значение...
То есть делаем выборку

select a = convert(pokazatel) from table

(где в table собственно и находится поле pokazatel)

а без try catch не представляю ((((
15 ноя 12, 16:47    [13479351]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйста!  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Никак не быть.
15 ноя 12, 16:48    [13479361]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйста!  [new]
_djХомяГ
Guest
1 А может функции и не надо а юзать LIKE и функции ?
2 Конвертацию чего в чего?
15 ноя 12, 16:50    [13479370]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйста!  [new]
Алексей Кр
Member

Откуда: Белгород
Сообщений: 458
Имеем поле с строками.
Необходимо сконвертить это поле число.
Если удается - конвертим, если нет - возвращаем например 0...
15 ноя 12, 16:52    [13479392]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйста!  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Алексей Кр
Имеем поле с строками.
Необходимо сконвертить это поле число.
Если удается - конвертим, если нет - возвращаем например 0...
Ну так проверьте сначала, можно ли его сконвертить. Цифр всего десять.

Сообщение было отредактировано: 15 ноя 12, 16:55
15 ноя 12, 16:55    [13479413]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйста!  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Гавриленко Сергей Алексеевич
Алексей Кр
Имеем поле с строками.
Необходимо сконвертить это поле число.
Если удается - конвертим, если нет - возвращаем например 0...
Ну так проверьте сначала, можно ли его сконвертить. Цифр всего десять.
В числовых строках не только цифры могут бытьправильных

Алексей Кр, непонятно, что такое по-Вашему "число"?
Кстати, даже за последние пару дней подобных тем здесь было несколько
15 ноя 12, 17:10    [13479534]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйста!  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
iap
Слово "правильных" там лишнее. Поторопился :((
15 ноя 12, 17:11    [13479541]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйста!  [new]
trew
Member

Откуда: Москва
Сообщений: 2646
12954879
15 ноя 12, 17:12    [13479553]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйста!  [new]
_djХомяГ
Guest
Смотрите например тут
15 ноя 12, 17:12    [13479555]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйста!  [new]
Алексей Кр
Member

Откуда: Белгород
Сообщений: 458
Вот же ш подводные камни а...
select ISNUMERIC('-') - это 1
select CAST('-' as float) - ошибка
весело...
15 ноя 12, 17:52    [13479821]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйста!  [new]
Алексей Кр
Member

Откуда: Белгород
Сообщений: 458
Так что в функции мало того что проверить на цифры, но и разобрать все возможные случаи придется (((
Как же так, нет даже универсальной функции конвертации в скуле (((
15 ноя 12, 17:55    [13479840]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйста!  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
Алексей Кр,

зато
select CAST('-' as int) = 0
select CAST('-' as money) = 0.00
15 ноя 12, 17:59    [13479861]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйста!  [new]
Алексей Кр
Member

Откуда: Белгород
Сообщений: 458
Мне дробные нужны, там могут быть и "0.5" например и "-0.5"
15 ноя 12, 18:02    [13479892]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйста!  [new]
Алексей Кр
Member

Откуда: Белгород
Сообщений: 458
О, так лучше использовать тип данных money ?
15 ноя 12, 18:06    [13479927]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйста!  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34703
Алексей Кр,
А что если б тебе подумать о том, чтобы конвертацию эту производить на клиенте ?
15 ноя 12, 19:36    [13480397]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйста!  [new]
RubinDm
Member

Откуда:
Сообщений: 461
как вариант - реализовать функцию конвертации в виде скалярной функции на clr. я пару раз применял такое решение в боевых условиях. в clr банально вызывал int.TryParse.
15 ноя 12, 20:01    [13480515]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйста!  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Алексей Кр,

че-то я не пойму, Вы когда читать научитесь?
Вот разжевал же, а Вы всё равно: "но и разобрать все возможные случаи придется"
13479555
15 ноя 12, 21:20    [13480712]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить