Изменение типа данных из таблицы в SQL Server с помощью Visual Studio (C#)Изменить тип данных таблицы в SQL Server с помощью Visual Studio (C#)
Контекст
I есть веб-скребок, который я использую, чтобы ежедневно извлекать данные с различных веб-сайтов (через автоматизированные задачи).
Каждый проект скребка затем создает отдельную таблицу SQL Server и заполняет его извлеченными данными.
Проблема
Моя проблема заключается в том, что веб-скребок будет использовать только
nvarchar(4000)
как тип данных для каждого столбца.Мне нужно использовать данные из автоматически сгенерированных таблиц в коде C#.
Соответствующая колонка (опять же помня, что эта таблица автогенерируется веб-скребком) согласована и содержит данные, которые выглядят как «$ 12,34».
Когда я использую данные, мне нужно «$ 12.34» быть десятичным (или некоторым другим цифровым форматом), чтобы я мог сравнивать с другими числовыми значениями.
Пробовал
Моя первая мысль была просто сделать
Convert.ToDecimal(myDecimalStringNum)
, но бросаетSystem.FormatException
.Я также пробовал
Decimal.Parse
в случае, если это была проблема культуры; такой же результат.Я попытался программно (от VB или C#) изменить тип данных столбца от
nvarchar
доdecimal
, не работал. Кстати, я даже не мог изменить тип данных отnvarchar
доdecimal
в SSMS.Одна вещь, которая работает, меняет тип данных для столбца с
nvarchar(4000)
на деньги с использованием SSMS. Из типа данных денег я могу успешно использоватьConvert.ToDecimal
.
Вопрос
Проблема, C# не имеет тип данных «деньги», которые я могу использовать, чтобы изменить столбец в SQL Server для money
. Все веб-скребки, генерация таблицы SQL Server и программа на C#, которая использует таблицы, должны запускаться автоматически каждое утро.
Я нахожусь на 99% пути, мне просто нужно решение этой проблемы, которое может быть добавлено в мой автоматический рабочий процесс.На данный момент похоже на то, чтобы выяснить способ автоматизации изменения типа данных столбца с автоматической сгенерированной таблицей от nvarchar(4000)
до денег в SSMS, но я открыт для других предложений!
В C# вы можете использовать 'decimal.Parse (« $ 12.34 », NumberStyles.Currency, новую CultureInfo (« en-us »));'. Вы должны указать NumberStyle и FormatProvider. –