27,579
社区成员
发帖
与我相关
我的任务
分享
declare @s varchar(30)
set @s='去掉字符后面的空格09Az '
select reverse(LTRIM(REVERSE(@s)))
/*
--------------------
去掉字符后面的空格09Az
(1 行受影响)
*/
declare @t char(10)
set @t='a b'
--未转之前
select @t,datalength(@t),datalength(rtrim(@t))
--(1)转成VARCHAR
SELECT CAST(@t as VARCHAR),DATALENGTH(CAST(@t as VARCHAR)),DATALENGTH(RTRIM(@t))
--(2)CTE处理
;
WITH Rt
AS
(
SELECT 1 as Row,SUBSTRING(@t,1,1) as C
UNION ALL
SELECT Row+1,SUBSTRING(@t,Row,1)
FROM Rt
WHERE Row+1<=DATALENGTH(@t)
)
SELECT LEFT(@t,MAX(Row)-1),DATALENGTH(LEFT(@t,MAX(Row)-1)),DATALENGTH(RTRIM(LEFT(@t,MAX(Row)-1))) FROM Rt WHERE C<>' '
--(3)REVERSE处理
DECLARE @r VARCHAR(10)
SET @r =REVERSE(STUFF(REVERSE(@t),1,PATINDEX('%[^ ]%',REVERSE(@t))-1,''))
SELECT @r,DATALENGTH(@r),DATALENGTH(RTRIM(@r))
select
len(cast('a ' as char)),
cast('a ' as char),
len(cast('a ' as varchar)),
cast('a ' as varchar)
----------- ------------------------------ ----------- ------------------------------
1 a 1 a
select cast('asdfasd f ' as varchar)
declare @str varchar(10)
set @str='abc '
select reverse(ltrim(reverse(@str))) --不是RTRIM,呵呵