Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как определить можно ли конвертировать varchar в int ? / 4 сообщений из 4, страница 1 из 1
02.10.2002, 16:08:21
    #32054865
Alex Alexeev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить можно ли конвертировать varchar в int ?
Первое, что приходит на ум - это isnumeric(),
но эта функция вернет true если строка будет равна '-12.345E-21', а convert(int, '-12.345E-21')
вернет:
Syntax error converting the varchar value '-12.345E-21' to a column of data type int.

а также isnumeric('12,345')=1,
но convert(real, '12,345') возвращает:
Error converting data type varchar to real.

Так как же быть ???
...
Рейтинг: 0 / 0
02.10.2002, 16:17:09
    #32054872
jimmers
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить можно ли конвертировать varchar в int ?
Я бы использовал LIKE.

Простой пример:

Код: plaintext
1.
2.
3.
declare @val VARCHAR( 100 )
SET @val = '34235'
if @val LIKE REPLICATE('[0-9]', len(@val)) PRINT 'Is Number'
...
Рейтинг: 0 / 0
02.10.2002, 16:34:30
    #32054879
Александр Степанов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить можно ли конвертировать varchar в int ?
А может, больше подойдет что-то вроде этого:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
DECLARE @table table (field varchar( 20 ))

Insert Into @table values('-12.345E-21')
Insert Into @table values('12,345')
Insert Into @table values('324.55')
Insert Into @table values('1,235.456E+4')

Select
	CASE 
		WHEN field Like '%e%' THEN CAST(CAST(field As real) As int) 
		ELSE CAST(CAST(field As money) As int) 
	END
From 
	@table
Where
	IsNumeric(field)= 1 


Дело в том, что IsNumeric показывает возможность конвертить в типы "valid integer, floating point number, money or decimal type" (BOL). Причем если у нас в строке присутствует символ "e", то сначала конвертим во float, в остальных случаях - сначала в money, затем результат - в int. Если же в строке будут присутствовать оба этих символа, то функция IsNumeric вернет 0.

С уважением,
Александр Степанов
...
Рейтинг: 0 / 0
02.10.2002, 17:14:09
    #32054900
Александр Степанов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить можно ли конвертировать varchar в int ?
В тексте скрипта вместо

CAST(field As real)

следует читать

CAST(field As float)
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как определить можно ли конвертировать varchar в int ? / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]