LTRIM(str)
和LTRIM(RTRIM(str))
有什么区别
SELECT LTRIM(RTRIM(' Removes trailing spaces. '))
SELECT LTRIM(' Removes trailing spaces. ')
答案 0 :(得分:2)
ltrim()
删除字符串中的前导空格(左侧的空格),rtrim()
删除结尾的空格。
将两个函数级联会删除两端的空格。一些(很多……大多数!)数据库具有通用的trim()
函数; SQL Server 2017及更高版本具有此功能,但较旧的版本则没有:这就是为什么您有时会在旧版代码中遇到此ltrim(rtrim(...))
构造的原因。
答案 1 :(得分:2)
这不是OP在他们的问题中提出的问题,而是在评论中提出的问题,但这听起来像是他们的真正问题。因此,我将其作为后代的答案:
我得到
len(LTRIM(RTRIM(' Removes trailing spaces. '))) and len(LTRIM(' Removes trailing spaces. ')
。等于。
确定相等性时,SQL Server将忽略尾随空格。 'Trailing Spaces' = 'Trailing Spaces '
将返回True
。
这不是前导空格的情况。 ' Leading Space' = 'Leading Space'
将不返回True
。
因此,在比较两个值时,如果它们的前导空格数量可能不同,则需要修剪(LTRIM
),但出于比较目的(仅),您不需要修剪({{ 1}})的结尾。
当然,您可以在SQL Server的最新版本(2017+)中使用RTRIM
进行修剪,但是,任何修剪操作都将使查询不可SARG,这可能(显着)影响性能。如果您需要存储未修剪和修剪过的数据,最好使用TRIM
计算列,您可以对其进行索引。