Ошибка преобразования при преобразовании значения nvarchar '1500' в тип данных int - PullRequest
0 голосов
/ 02 марта 2012

Это моя ошибка:

Сбой преобразования при преобразовании значения nvarchar '1500' в тип данных int.

Описание: во время выполнения текущего веб-запроса произошло необработанное исключение. Пожалуйста, просмотрите трассировку стека для более информация об ошибке и ее возникновении в коде.

Сведения об исключении: System.Data.SqlClient.SqlException: преобразование не выполнено при преобразовании значения nvarchar '1500' в тип данных int.

Выше значения 1,500 - это сумма, которая должна иметь ',' Я думаю, что ',' дает мне ошибку, я думаю. Пожалуйста, дайте мне решение для этого.

Ответы [ 4 ]

3 голосов
/ 02 марта 2012

Чтобы преобразовать из nvarchar в int в SQL, необходимо удалить запятую. Используйте '1500' вместо '1,500'. Более того, начните с реального int вместо строки, как в 1500.

1 голос
/ 02 марта 2012

Можете ли вы попробовать что-то вроде этого

int x = 0;
string result = "1,500";
x = int.Parse(result, System.Globalization.NumberStyles.AllowThousands, System.Globalization.CultureInfo.InvariantCulture);

Это позволяет анализировать число с разделителем тысяч, присутствующим в вашей строке.

В случае, если вам нужно значение только для отображенияя не думаю, что есть смысл конвертировать их в int, так как он уже отформатирован как строка.

1 голос
/ 02 марта 2012

Если вы используете int.Parse для конвертации, попробуйте использовать флаг NumberStyles.AllowThousands, например:

int parsedInt= int.Parse(stringToParse, NumberStyles.AllowThousands);
0 голосов
/ 02 ноября 2015

Если вы хотите решить эту проблему на стороне SQL Server или базы данных, вы можете попробовать следующее решение: Все, что вам нужно сделать, это сначала привести ценность к деньгам, а затем - к деньгам. Ниже код работает нормально:

select cast(cast('1,500' as money) as int)

Но если вы хотите решить эту проблему на стороне .Net Framework, вы можете попробовать следующий код, который тоже работает нормально:

 string s = "1,500";
 int i = Int32.Parse(s, NumberStyles.AllowThousands);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...