2016-05-16 6 views
1

Изменение типа данных из таблицы в 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, но я открыт для других предложений!

+1

В C# вы можете использовать 'decimal.Parse (« $ 12.34 », NumberStyles.Currency, новую CultureInfo (« en-us »));'. Вы должны указать NumberStyle и FormatProvider. –

ответ

0

Если у вас есть контроль над SQL для чтения из таблицы, то вы можете использовать преобразования на запрос SQL:

select CONVERT(money, '$123.34') 

замены «$ 123,34» с колонкой. Тогда C# должен иметь возможность использовать это как десятичное.