У меня есть хранимая процедура, в которой у меня есть условие, чтобы проверить, является ли рейтинговый код 1,2 или 3 в предложении where. Что-то вроде этого:проверка недопустимых значений sql
WHERE
CONVERT(INT, LEFT(RatingCode, 1)) IN (1,2,3) AND
Иногда, когда есть плохие значения в столбце RatingCode выше строка выдает ошибку. Поэтому я придумал решение ниже:
WHERE
CASE WHEN ISNUMERIC(LEFT(RatingCode, 1)) = 1
THEN CASE WHEN CONVERT(INT, LEFT(RatingCode, 1)) IN (1,2,3)
THEN 1
ELSE 0
END
ELSE 0
END = 1 AND
Здесь, если есть недопустимое значение (нечисловой) в колонке RatingCode, то я хочу, чтобы игнорировать эту запись. Является ли это мое решение хорошим? Или есть лучшее решение?
Можете подумать о том, чтобы предотвратить вставку плохих данных, чтобы вам не пришлось реализовывать такое обходное решение. – Kritner
@Kritner Это управляется отдельной группой и занимает более 10 минут. Я не хочу, чтобы мой код терпел неудачу за недопустимое значение, когда исправление в 10 минут может решить это. – user793468