Как игнорировать плохие символы в запросе SQL - PullRequest
3 голосов
/ 06 января 2010

Короче говоря, у меня есть база данных SQL Server с полями varchar вместо даты и времени (не спрашивайте, это длинная история, которую нельзя исправить). Каким-то образом мы недавно получили странные / случайные символы, вставленные в эти поля вместо того, что должно быть там (NULL, '' или YYYY-MM-DD). Примерно так: '? + X' с высокобитными символами ascii.

В отчете используется этот запрос, чтобы помочь объединить данные во что-то пригодное для использования (здесь публикуются только соответствующие части):

SELECT CASE WHEN c.CallStatus = 'Closed' THEN CAST(c.ClosedDate + ' ' + c.ClosedTime as datetime) ELSE NULL END as 'Closed Date'
WHERE CAST(c.closeddate AS DATETIME) BETWEEN  @StartDate AND @EndDate

но он задыхается от этих новых неверных данных.

Мой вопрос такой:

Как я могу обновить запрос, чтобы игнорировать неверные данные, чтобы я мог запускать отчеты при поиске источника неверных данных? Мой первый приоритет - заставить отчеты работать, второй - найти и уничтожить источник неверных данных.

Ответы [ 2 ]

5 голосов
/ 06 января 2010
CASE WHEN ISDATE(closeddate) = 1 THEN CAST(c.closeddate AS DATETIME) ELSE NULL END
0 голосов
/ 06 января 2010

Кажется, все исправлено, спасибо! вот мой окончательный результат:

И случай, когда ISDATE (closeddate) = 1 ТОГДА БЫСТРЫЙ (закрытый как дата) Иначе NULL END МЕЖДУ @StartDate И @ EndDate

и теперь на охоту!

...