Обновление значения NaN в базе данных - PullRequest
3 голосов
/ 15 марта 2012

У меня есть старая база данных, в которой есть таблица, содержащая столбцы ( dataType REAL ) со значениями NaN (не число) .Теперь, если я запрашиваю эти таблицы, я получаю ошибки.Поэтому, чтобы обновить их, я попробовал следующий запрос:

UPDATE Table SET column = 0 WHERE IsNumeric(column)=0

Но даже этот запрос не смог выдать ошибку

"вернулись неверные данные для столбца".

Если тип столбца - varchar, я мог бы легко обновить. Но столбец - REAL , поэтому я не могу обновить таблицу.Помогите мне, я действительно застрял в этом вопросе на два дня.

Ответы [ 2 ]

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

Я получил решение, преобразовав значение этого столбца в строку, после чего я могу его обновить.

UPDATE Table
SET Column = CASE
               when charindex('NaN', UPPER(Column)) > 0 then 0
               ELSE Column
             END 

Здесь я ищу хариндекс 'NaN', поскольку, когда я выполняю CONVERT (varchar (1000), Column), данные NaN в этом столбце становятся -#@NaN.Поэтому я ищу это значение в этом столбце после преобразования в строку.Надеюсь, что это помогает другим.

Извините, у меня нет старой версии сервера.У меня только есть его резервная копия.

Новая версия сервера : Microsoft SQL Server 2008 R2 (окончательная первоначальная версия) - 10.50.1600.1 (Intel X86) 2 апреля 2010 15:53:02 Copyright (c)Microsoft Corporation Enterprise Edition в Windows NT 6.1 (сборка 7601: пакет обновления 1)

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

В зависимости от того, как именно (версии базы данных и исправления) вы попали в эту ситуацию, вам может помочь следующее утверждение, выданное в вашей базе данных.

DBCC CHECKDB WITH DATA_PURITY

Если это не помогает, отбросьте все индексы и ограничения для столбца и введите

UPDATE Table SET column = 0 WHERE IsNumeric(column)=0

еще раз. Затем воссоздайте индексы или ограничения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...