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

declare @r varchar(10)
set @r = 'fggh'

-- как проверить int в @r или не int?
26 янв 15, 14:39    [17171067]     Ответить | Цитировать Сообщить модератору
 Re: Как проверить, значение в переменной varchar что оно int  [new]
Glory
Member

Откуда:
Сообщений: 104760
try_convert()
26 янв 15, 14:40    [17171079]     Ответить | Цитировать Сообщить модератору
 Re: Как проверить, значение в переменной varchar что оно int  [new]
iap
Member

Откуда: Москва
Сообщений: 47045
Гость777,

например: tsql isint
26 янв 15, 14:42    [17171091]     Ответить | Цитировать Сообщить модератору
 Re: Как проверить, значение в переменной varchar что оно int  [new]
deadok
Member

Откуда:
Сообщений: 86
попробуйте
IsNumeric() 
может поможет
26 янв 15, 14:52    [17171171]     Ответить | Цитировать Сообщить модератору
 Re: Как проверить, значение в переменной varchar что оно int  [new]
iap
Member

Откуда: Москва
Сообщений: 47045
deadok
попробуйте
IsNumeric() 

может поможет
Не поможет!
26 янв 15, 14:54    [17171186]     Ответить | Цитировать Сообщить модератору
 Re: Как проверить, значение в переменной varchar что оно int  [new]
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]     Ответить | Цитировать Сообщить модератору
 Re: Как проверить, значение в переменной varchar что оно int  [new]
iap
Member

Откуда: Москва
Сообщений: 47045
Jovanny
Так можно.
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]%'
Недостаточно!
set @r = ' -12'
SELECT @r
WHERE @r NOT LIKE '%[^0-9]%';

SELECT CAST(@r AS INT);
26 янв 15, 15:02    [17171244]     Ответить | Цитировать Сообщить модератору
 Re: Как проверить, значение в переменной varchar что оно int  [new]
Jovanny
Member

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

Ну да, извиняюсь.
Тогда так:
set @r = '  -  12'
SELECT @r
WHERE ISNUMERIC(@r) = 1 AND @r LIKE '%[-0123456789]%'
26 янв 15, 15:24    [17171424]     Ответить | Цитировать Сообщить модератору
 Re: Как проверить, значение в переменной varchar что оно int  [new]
Jovanny
Member

Откуда:
Сообщений: 1196
Хотя нет, вру.
26 янв 15, 15:26    [17171439]     Ответить | Цитировать Сообщить модератору
 Re: Как проверить, значение в переменной varchar что оно int  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
Jovanny
Тогда так:


чего изобретаете, за вас всё давно написано...а ваш пример не работает:

set @r = '  -  1,2'
26 янв 15, 15:28    [17171460]     Ответить | Цитировать Сообщить модератору
 Re: Как проверить, значение в переменной varchar что оно int  [new]
iap
Member

Откуда: Москва
Сообщений: 47045
Jovanny
Хотя нет, вру.
Сходите по моей ссылке, подсмотрите ответ
26 янв 15, 15:35    [17171519]     Ответить | Цитировать Сообщить модератору
 Re: Как проверить, значение в переменной varchar что оно int  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
+ троллинг

with t0(n, d) as
(
	select 1, '+.0' union all
	select 2, '-.8776' union all
	select 3, '-1.2' union all
	select 4, '12 ' union all
	select 5, '1.2' union all
	select 6, '+1.2' union all
	select 7, 'q-23.5' union all
	select 8, '14. ' union all
	select 9, ' +1.2 ' union all
	select 10, '+ 1.2' union all
	select 11, '+1. 2' union all
	select 12, '+1.2 dwee' union all
	select 17, '3435263' union all
	select 18, '  -  1,2'
)
select n, d, ext.Regex_IsMatch(d, '^\d+$', NULL) is_num
from
	t0;


ndis_num
1+.00
2-.87760
3-1.20
412 0
51.20
6+1.20
7q-23.50
814. 0
9 +1.2 0
10+ 1.20
11+1. 20
12+1.2 dwee0
173435263 1
18 - 1,2 0

26 янв 15, 15:36    [17171521]     Ответить | Цитировать Сообщить модератору
 Re: Как проверить, значение в переменной varchar что оно int  [new]
хмхмхм
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]     Ответить | Цитировать Сообщить модератору
 Re: Как проверить, значение в переменной varchar что оно int  [new]
Jovanny
Member

Откуда:
Сообщений: 1196
Knyazev Alexey
чего изобретаете, за вас всё давно написано...а ваш пример не работает:


Наверняка написано. Просто раньше не сталкивался, стало интересно.
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]     Ответить | Цитировать Сообщить модератору
 Re: Как проверить, значение в переменной varchar что оно int  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
ток регулярка, скорее так:

^[+-]?\d+$ чтобы знак рассматривать как валидный
^\s*[+-]?\s*\d+\s*$ если допускаются пробельные символы между знаком и числом и по краям
...
и т. д..
26 янв 15, 15:41    [17171588]     Ответить | Цитировать Сообщить модератору
 Re: Как проверить, значение в переменной varchar что оно int  [new]
iap
Member

Откуда: Москва
Сообщений: 47045
Jovanny
Knyazev Alexey
чего изобретаете, за вас всё давно написано...а ваш пример не работает:


Наверняка написано. Просто раньше не сталкивался, стало интересно.
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:42    [17171598]     Ответить | Цитировать Сообщить модератору
 Re: Как проверить, значение в переменной varchar что оно int  [new]
iap
Member

Откуда: Москва
Сообщений: 47045
iap
Jovanny
пропущено...


Наверняка написано. Просто раньше не сталкивался, стало интересно.
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:43    [17171618]     Ответить | Цитировать Сообщить модератору
 Re: Как проверить, значение в переменной varchar что оно int  [new]
iap
Member

Откуда: Москва
Сообщений: 47045
iap
iap
пропущено...
Этого мало!
И потом, при чём здесь диапазон между пробелом и нулём?
Фу ты! Какую чушь написал! Простите, люди добрые...
26 янв 15, 15:49    [17171662]     Ответить | Цитировать Сообщить модератору
 Re: Как проверить, значение в переменной varchar что оно int  [new]
Jovanny
Member

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

Не, если Regex подключить, так вообще всё отлично.
Но не везде это возможно.
26 янв 15, 17:06    [17172317]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить