Как SQL-сервер обрабатывает сравнения текста с пробелами LEADING

Многое сделано (и его легко найти в Интернете) о том, что вам не нужно использовать где rtrim(columnname) = 'value' в sql server, потому что он автоматически считает значение с или без конечных пробелов одинаковым,

Однако мне было трудно найти информацию о ВЕДУЩИХ пространствах. Что если (по какой-либо причине) в нашем хранилище данных есть ведущие пробелы в полях определенного типа varchar / char и нам нужно иметь предложения where - нам все еще нужно где ltrim()? Я пытаюсь избежать этой большой производительности, исследуя другие варианты. Благодарю вас

1 ответ

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

Другие вопросы по тегам