Как проверить число

4cbn3c4534
Дата: 01.02.2013 12:31:46
Содержащееся в varchar на конвертабельность к bigint ?
DmitryZ78
Дата: 01.02.2013 12:41:22
4cbn3c4534,

try / catch
Edkonst2008
Дата: 01.02.2013 12:42:14
DmitryZ78
4cbn3c4534,

try / catch


и cast :-)
Мистер Хенки
Дата: 01.02.2013 12:47:40
может велосипед
declare @str varchar(max)
set @str = '+23123466666666666555'
select CHARINDEX('+',@str) 
select CAST(@str as bigint) 
where @str not like('%[^0-9,-,+]%')
and not  CHARINDEX(@str,'-')>1
and not  CHARINDEX(@str,'+')>1
and len(replace(replace(@str,'-',''),'+',''))<=19
4cbn3c4534
Дата: 01.02.2013 12:52:33
DmitryZ78
try / catch
Незя.

Мистер Хенки
может велосипед
declare @str varchar(max)
set @str = '+23123466666666666555'
select CHARINDEX('+',@str) 
select CAST(@str as bigint) 
where @str not like('%[^0-9,-,+]%')
and not  CHARINDEX(@str,'-')>1
and not  CHARINDEX(@str,'+')>1
and len(replace(replace(@str,'-',''),'+',''))<=19
Похоже, но там 19ый разряд не полный по идее.
Мистер Хенки
Дата: 01.02.2013 13:04:59
4cbn3c4534
Похоже, но там 19ый разряд не полный по идее.

Ну может тогда (replace(replace(@str,'-',''),'+','')) <'9223372036854775808'
4cbn3c4534
Дата: 01.02.2013 13:09:18
А что скажете про такой изврат? Исключения могут быть?

IF (ISNUMERIC(@number) = 1)
	IF (CAST(@number as float) > 0 and CAST(@number as float) < 9223372036854775807)
		SELECT CAST(CAST(@number as float) as bigint)
Гость333
Дата: 01.02.2013 13:11:49
4cbn3c4534
А что скажете про такой изврат? Исключения могут быть?

IF (ISNUMERIC(@number) = 1)
	IF (CAST(@number as float) > 0 and CAST(@number as float) < 9223372036854775807)
		SELECT CAST(CAST(@number as float) as bigint)

Да сколько угодно :)
DECLARE @number VARCHAR(10) = '3.14e+1';
IF (ISNUMERIC(@number) = 1)
	IF (CAST(@number as float) > 0 and CAST(@number as float) < 9223372036854775807)
		SELECT CAST(CAST(@number as float) as bigint)
4cbn3c4534
Дата: 01.02.2013 13:15:25
Гость333
Да сколько угодно :)
DECLARE @number VARCHAR(10) = '3.14e+1';
Ну и будет 31, что вполне соответствует.
Гость333
Дата: 01.02.2013 13:18:08
4cbn3c4534
Ну и будет 31, что вполне соответствует.

Ну ладно, если вас такой вариант устраивает, тогда так :)
DECLARE @number VARCHAR(10) = '$10'
IF (ISNUMERIC(@number) = 1)
	IF (CAST(@number as float) > 0 and CAST(@number as float) < 9223372036854775807)
		SELECT CAST(CAST(@number as float) as bigint)