powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как определить можно ли конвертировать varchar в int ?
4 сообщений из 4, страница 1 из 1
Как определить можно ли конвертировать varchar в int ?
    #32054865
Alex Alexeev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Первое, что приходит на ум - это 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
Как определить можно ли конвертировать varchar в int ?
    #32054872
Фотография jimmers
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы использовал 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
Как определить можно ли конвертировать varchar в int ?
    #32054879
Фотография Александр Степанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А может, больше подойдет что-то вроде этого:
Код: 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
Как определить можно ли конвертировать varchar в int ?
    #32054900
Фотография Александр Степанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В тексте скрипта вместо

CAST(field As real)

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

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


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