Попробуйте выполнить следующие действия в MSSQL 2005:
select convert(char(2), 123)
Ключевым моментом здесь является то, что char (2) слишком мала, чтобы принять значение «123».Я ожидаю увидеть здесь ошибку усечения, но вместо этого возвращается значение "*".
Обновление: В нескольких ответах показано, как выполнить приведение таким образом, чтобы вызватьошибка.Это не совсем то, что мне нужно.У нас есть много кода, который использует определенное поле, которое раньше было объявлено как char (2), но с тех пор было изменено на int.Моя цель здесь - убедиться, что код, который не был преобразован, упадет, если он встретит данные, которые он не может обработать.Итак, мы можем исправить это.
Интересно, что dsolimano отмечает, что изменение указанного выше типа на nchar вызывает ожидаемую ошибку, а Джастин Нисснер отмечает, что обапо дизайну.Странное несоответствие, учитывая, что nchar для поддержки Unicode, а?
Из ответов, которые у меня есть, кажется, что я, к сожалению, не могу заставить сервер выдать ошибку для существующего кода.