Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Гость777
Guest |
Добрый деньdeclare @r varchar(10) set @r = 'fggh' -- как проверить int в @r или не int? |
26 янв 15, 14:39 [17171067] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
try_convert() |
26 янв 15, 14:40 [17171079] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47045 |
Гость777, например: tsql isint |
26 янв 15, 14:42 [17171091] Ответить | Цитировать Сообщить модератору |
deadok Member Откуда: Сообщений: 86 |
попробуйте IsNumeric()может поможет |
26 янв 15, 14:52 [17171171] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47045 |
![]() |
||
26 янв 15, 14:54 [17171186] Ответить | Цитировать Сообщить модератору |
Jovanny Member Откуда: Сообщений: 1196 |
Так можно.declare @r varchar(10) set @r = 'fggh' SELECT @r WHERE @r NOT LIKE '%[^0-9]%' set @r = '1.2' SELECT @r WHERE @r NOT LIKE '%[^0-9]%' set @r = '12' SELECT @r WHERE @r NOT LIKE '%[^0-9]%' |
26 янв 15, 14:59 [17171223] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47045 |
![]() set @r = ' -12' SELECT @r WHERE @r NOT LIKE '%[^0-9]%'; SELECT CAST(@r AS INT); |
||
26 янв 15, 15:02 [17171244] Ответить | Цитировать Сообщить модератору |
Jovanny Member Откуда: Сообщений: 1196 |
iap, Ну да, извиняюсь. Тогда так: set @r = ' - 12' SELECT @r WHERE ISNUMERIC(@r) = 1 AND @r LIKE '%[-0123456789]%' |
26 янв 15, 15:24 [17171424] Ответить | Цитировать Сообщить модератору |
Jovanny Member Откуда: Сообщений: 1196 |
Хотя нет, вру. |
26 янв 15, 15:26 [17171439] Ответить | Цитировать Сообщить модератору |
Knyazev Alexey Member Откуда: Екб -> Мск Сообщений: 10234 Блог |
чего изобретаете, за вас всё давно написано...а ваш пример не работает: set @r = ' - 1,2' |
||
26 янв 15, 15:28 [17171460] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47045 |
|
||
26 янв 15, 15:35 [17171519] Ответить | Цитировать Сообщить модератору |
churupaha Member Откуда: Краснодар Сообщений: 1015 |
|
|
26 янв 15, 15:36 [17171521] Ответить | Цитировать Сообщить модератору |
хмхмхм
Guest |
Гость777, Например так: declare @r varchar(100) set @r = ' - 1. 2 ' select case (case when isnumeric(@r) = 1 and @r not like '%[^0-9 +-]%' and len(replace(replace(replace(@r, ' ', ''), '-', ''), '+', '')) <= 10 then case when cast(@r as float) between -2147483648 and 2147483647 then @r else cast(0 as int) end else cast(0 as int) end) when 0 then 0 else 1 end as ret |
26 янв 15, 15:39 [17171559] Ответить | Цитировать Сообщить модератору |
Jovanny Member Откуда: Сообщений: 1196 |
Наверняка написано. Просто раньше не сталкивался, стало интересно. declare @r varchar(10) set @r = ' - 12 ' SELECT @r WHERE ISNUMERIC(@r) = 1 AND @r NOT LIKE '%[^ -0123456789]%' SELECT CAST(@r AS int) |
||
26 янв 15, 15:40 [17171569] Ответить | Цитировать Сообщить модератору |
churupaha Member Откуда: Краснодар Сообщений: 1015 |
ток регулярка, скорее так: ^[+-]?\d+$ чтобы знак рассматривать как валидный ^\s*[+-]?\s*\d+\s*$ если допускаются пробельные символы между знаком и числом и по краям ... и т. д.. |
26 янв 15, 15:41 [17171588] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47045 |
|
||||
26 янв 15, 15:42 [17171598] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47045 |
|
||||
26 янв 15, 15:43 [17171618] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47045 |
|
||||
26 янв 15, 15:49 [17171662] Ответить | Цитировать Сообщить модератору |
Jovanny Member Откуда: Сообщений: 1196 |
churupaha, Не, если Regex подключить, так вообще всё отлично. Но не везде это возможно. |
26 янв 15, 17:06 [17172317] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |