有兴趣的进来写写这个T-SQL。

CN_SQL 2009-05-04 05:14:12
去掉字符后面的空格(不能使用RTRIM函数)。
...全文
258 36 打赏 收藏 转发到动态 举报
写回复
用AI写文章
36 条回复
切换为时间正序
请发表友善的回复…
发表回复
xy111222333 2009-05-05
  • 打赏
  • 举报
回复
倒是个有趣的问题~~~~~~
CN_SQL 2009-05-04
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 happyflystone 的回复:]
SQL codeselect
len(cast('a ' as char)),
cast('a ' as char),
len(cast('a ' as varchar)),
cast('a ' as varchar)


----------- ------------------------------ ----------- ------------------------------
1 …
[/Quote]
特殊的1个字符,的确是可以这样处理.

还有朋友说到有函数不用的效率问题,我只是提供一个题目出来,给大家交流字符处理的方法而已.
CN_SQL 2009-05-04
  • 打赏
  • 举报
回复
[Quote=引用 33 楼 CN_SQL 的回复:]
引用 18 楼 csdyyr 的回复:
SQL codedeclare @str varchar(10)
set @str='abc '

select reverse(ltrim(reverse(@str))) --不是RTRIM,呵呵

不正确
[/Quote]
那是假的~,我的确是说没有不可以用LTRIM,还有没其他的方法?
CN_SQL 2009-05-04
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 csdyyr 的回复:]
SQL codedeclare @str varchar(10)
set @str='abc '

select reverse(ltrim(reverse(@str))) --不是RTRIM,呵呵
[/Quote]
不正确
htl258_Tony 2009-05-04
  • 打赏
  • 举报
回复
[Quote=引用楼主 CN_SQL 的帖子:]
去掉字符后面的空格(不能使用RTRIM函数)。
[/Quote]
楼主没说不能用LTRIM。

declare @s varchar(30)

set @s='去掉字符后面的空格09Az '

select reverse(LTRIM(REVERSE(@s)))
/*
--------------------
去掉字符后面的空格09Az

(1 行受影响)
*/
melodycome 2009-05-04
  • 打赏
  • 举报
回复
respace('a',''),是这样呀,前面的都说了
一品梅 2009-05-04
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 csdyyr 的回复:]
SQL codedeclare @str varchar(10)
set @str='abc '

select reverse(ltrim(reverse(@str))) --不是RTRIM,呵呵
[/Quote]
哈哈.
Garnett_KG 2009-05-04
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 tongnaifu 的回复:]
SQL code
declare @bstr varchar(50)
set @bstr='asdfsd '
select left(@bstr,len(@bstr))
这样?
[/Quote]
.
lsd123 2009-05-04
  • 打赏
  • 举报
回复
.
llsen 2009-05-04
  • 打赏
  • 举报
回复
按照' '分割
网上很多这种分割函数
然后从最后一个算起
前一个是空格,就取得,不是就停止
然后重新拼成字符串
weity123 2009-05-04
  • 打赏
  • 举报
回复
可以用replace替换掉,有次客户的代码里居然加的是tab键,导致查询不对,后来用replace替换解决的。。trim不起作用
Garnett_KG 2009-05-04
  • 打赏
  • 举报
回复

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))

xiequan2 2009-05-04
  • 打赏
  • 举报
回复
sql默认的是去掉字符最后面的空格
-狙击手- 2009-05-04
  • 打赏
  • 举报
回复
select 
len(cast('a ' as char)),
cast('a ' as char),
len(cast('a ' as varchar)),
cast('a ' as varchar)


----------- ------------------------------ ----------- ------------------------------
1 a 1 a
-狙击手- 2009-05-04
  • 打赏
  • 举报
回复
select cast('asdfasd f                                                ' as varchar)
haitao 2009-05-04
  • 打赏
  • 举报
回复
存到char(1000)类型的变量里?
yeah86 2009-05-04
  • 打赏
  • 举报
回复
有trim()函数为什么不用?
这样写出来的代码执行效率低!
cmdream 2009-05-04
  • 打赏
  • 举报
回复
啥意思
csdyyr 2009-05-04
  • 打赏
  • 举报
回复
declare @str varchar(10)
set @str='abc '

select reverse(ltrim(reverse(@str))) --不是RTRIM,呵呵
jjx5373 2009-05-04
  • 打赏
  • 举报
回复
我的不对?
不会吧,
哈哈哈,我感觉没有错啊!
嘿嘿!
加载更多回复(16)

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧