LTRIM和带有RTRIM的LTRIM之间的区别

时间:2020-11-04 09:11:25

标签: sql sql-server string

LTRIM(str)LTRIM(RTRIM(str))有什么区别

SELECT LTRIM(RTRIM('     Removes trailing spaces.   '))
SELECT LTRIM('     Removes trailing spaces.   ')

2 个答案:

答案 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计算列,您可以对其进行索引。

相关问题