gpt4 book ai didi

sql-server - 如何使 SQL Server 在比较带有和不带有尾随空格的 varchar 时返回 FALSE?

转载 作者:行者123 更新时间:2023-12-02 08:41:07 25 4
gpt4 key购买 nike

如果我故意在 VARCHAR 列中存储尾随空格,如何强制 SQL Server 将数据视为不匹配?

SELECT 'foo' WHERE 'bar' = 'bar    '

我已经尝试过:

SELECT 'foo' WHERE LEN('bar') = LEN('bar    ')

我见过的一种 float 方法是将特定字符附加到每个字符串的末尾,然后将其删除以用于我的演示......但这看起来很愚蠢。

是否有我忽略的方法?

我注意到它不适用于前导空格,所以也许我运行一个函数在比较之前反转字符顺序......问题是这使得查询无法SARGable.. ..

最佳答案

来自 LEN (Transact-SQL) 上的文档:

Returns the number of characters of the specified string expression, excluding trailing blanks. To return the number of bytes used to represent an expression, use the DATALENGTH function

此外,来自 How SQL Server Compares Strings with Trailing Spaces 上的支持页面:

SQL Server follows the ANSI/ISO SQL-92 specification on how to compare strings with spaces. The ANSI standard requires padding for the character strings used in comparisons so that their lengths match before comparing them.

更新:我使用LIKE(在比较过程中不会填充空格)和DATALENGTH()删除了我的代码,因为它们比较字符串并不是万无一失的

在很多其他地方也有人问过这个问题以及其他解决方案:

关于sql-server - 如何使 SQL Server 在比较带有和不带有尾随空格的 varchar 时返回 FALSE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3938566/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com