Я бы никогда не использовал символы. У меня были эти дебаты со многими людьми, и они всегда поднимают усталое клише, что чарс быстрее. Ну, я говорю, насколько быстрее? О чем мы здесь говорим, миллисекундах, секундах и если да, то сколько? Вы говорите мне, потому что кто-то утверждает, что это на несколько миллисекунд быстрее, мы должны ввести в систему тонны трудно исправляемых ошибок?
Итак, вот некоторые проблемы, с которыми вы столкнетесь:
Каждое поле будет дополнено, так что вы всегда будете иметь код, который везде имеет RTRIMS. Это также огромная трата дискового пространства для более длинных полей.
Теперь предположим, что у вас есть типичный пример поля char, состоящего всего из одного символа, но поле является необязательным. Если кто-то передает пустую строку в это поле, он становится одним пробелом. Поэтому, когда другое приложение / процесс запрашивает его, они получают один пробел, если они не используют rtrim. У нас были XML-документы, файлы и другие программы, которые отображают только один пробел в необязательных полях и что-то не так.
Итак, теперь вы должны убедиться, что вы передаете пустые строки, а не пустые, в поле char. Но это НЕ правильное использование нуля. Вот использование нуля. Допустим, вы получили файл от поставщика
Имя | Пол | Город
Боб || Лос-Анджелес
Если пол не указан, то вы вводите Боба, пустую строку и Лос-Анджелес в таблицу. Теперь предположим, что вы получили файл, его формат изменился, и пол больше не включен, но был в прошлом.
Имя | Город
Боб | Сиэтл
Ну, так как пол не включен, я бы использовал нуль. Varchars поддерживают это без проблем.
Символ с другой стороны отличается. Вы всегда должны отправить ноль. Если вы когда-нибудь отправите пустую строку, у вас будет поле с пробелами.
Я мог бы продолжать и исправлять все ошибки, которые мне пришлось исправить с помощью символов и примерно через 20 лет разработки.