在SQLServer2005中,不使用RTRIM对字符串进行RTRIM的最有效方法是什么?

在SQLServer2005中,不使用RTRIM对字符串进行RTRIM的最有效方法是什么?,sql,sql-server-2005,Sql,Sql Server 2005,在单个select语句中,我需要在SQLServer2005环境中RTRIM字符串 在你看来,实现这一目标最有效的方法是什么 示例: 'ALPHA ' ==> 'ALPHA' (the blanks at the end are removed) ' BETA ' ==> ' BETA' (the blank in first position remains, the two blanks at the end are removed) ' GAMMA' ==> '

在单个select语句中,我需要在SQLServer2005环境中RTRIM字符串

在你看来,实现这一目标最有效的方法是什么

示例:

'ALPHA    ' ==> 'ALPHA' (the blanks at the end are removed)
' BETA  ' ==> ' BETA'  (the blank in first position remains, the two blanks at the end are removed)
' GAMMA' ==> ' GAMMA'  (the blank in first position remains)
提前感谢您的帮助

编辑:我无权使用RTRIM


这将使专栏的两边都变得整洁

我想你的答案在标题中:

SELECT Columm1
, RTRIM(Column1) as Column1Trimmed
FROM Table1
RTRIM是最有效的右修剪方法

没有RTRIM:

select '*          *'
, REPLACE('*          *',' ','')
作为LENCHAR_FIELD_或_VAR的一种方式忽略尾随空格

left(fld, len(fld))

试试这个

Declare @str Varchar(50) = '      GAMMA    ' 
;With Cte As
( 
    Select Data = Substring(@str,Number,1) 
    From master.dbo.spt_values 
    where Number Between 1 And Len(@str) And Type='P' 
) 
Select Data = Replace(Bar,' ',' ') 
From (Select Cast(Data As Varchar(Max)) From Cte For Xml Path(''))Foo(Bar)
结果


只需使用rtrimcol1,从您的表中选择rtrimcol1,您应该知道这一点。然而,我有点困惑为什么不能使用RTRIM,除非这是一种挑战;将Cte作为选择数据=Substring@str,数字,1来自master.dbo.spt_值,其中数字介于1和Len@str并键入class='P'选择数据=ReplaceBar'&x20;''从Cte For Xml中选择CastData作为VarcharMaxPathFooBar@UltraCommit,请检查答案,并让我知道这是否有效。未授权使用LTRIM和RTRIM。一定是其他问题。当您具有select访问权限时,正常的微调功能始终是可能的。未授权使用LTRIM,RTRIMI正在等待您公开发布代码;-回答刚刚接受,谢谢!!
select left(fld, (len(fld + '.')-1)-patindex('%[^ ]%', reverse(fld))+1) 
Declare @str Varchar(50) = '      GAMMA    ' 
;With Cte As
( 
    Select Data = Substring(@str,Number,1) 
    From master.dbo.spt_values 
    where Number Between 1 And Len(@str) And Type='P' 
) 
Select Data = Replace(Bar,' ',' ') 
From (Select Cast(Data As Varchar(Max)) From Cte For Xml Path(''))Foo(Bar)
Data
      GAMMA