0

关于如何不需要在 sql server 中使用where rtrim(columnname) = 'value'已经做了很多(并且很容易在互联网上找到) ,因为它会自动将带有或不带有尾随空格的值视为相同.

但是,我很难找到有关 LEADING 空间的信息。如果(无论出于何种原因)我们的数据仓库在某些 varchar / char 类型的字段上有前导空格并且我们需要 where 子句 - 我们仍然需要 where ltrim() 怎么办?我试图通过研究其他选项来避免这种巨大的性能损失。谢谢你

4

1 回答 1

0

在比较任何基于文本的数据类型时,从不忽略前导空格。如果您要比较文本列的相等性,最好的选择是在数据输入时验证您的值,以确保不允许前面带有不需要的空格的文本。例如,如果您的数据库期望用户从您的数据库应用程序期望的可能值列表中键入某些内容,则不要让您的用户界面让用户输入自由格式的文本,强制他们输入显式有效的文本之一价值观。如果您需要用户能够输入自由格式的文本,但从不想要前导空格,那么在插入时去掉它们。规范化您的数据库应该可以防止很多此类问题。

于 2015-07-21T22:57:37.687 回答