发现reverse 问题
drop table #
create table #(Name char(10), Subject char(15), Result int)
insert # select '张三 ', '语文 ', 80
union all select '张三 ', '数学 ',90
union all select '张三 ', ' 物理 ', 85
union all select '李四 ', '语文 ', 85
union all select '李四 ', '数学 ', 92
union all select '李四 ', '物理 ', 82
select *,(ltrim((subject))) from #----------------变化的地方
select *,reverse(ltrim((subject))) from #
结果1------------------
张三 语文 80语文
张三 数学 90数学
张三 物理 85物理
李四 语文 85语文
李四 数学 92数学
李四 物理 82物理
结果2--------------------
张三 语文 80 文语(前面为空格)
张三 数学 90 学数
张三 物理 85 理物
李四 语文 85 文语
李四 数学 92 学数
李四 物理 82 理物
----------------------------------
差别就是 第三行纪录 他物理后面的空格为什么没有去掉呢???
[解决办法]
SQL没错,以“0”表示空格,分析如下:
1.数学00000000000
00物理000000000 //原来的样子:因为char(15),所以后面自动补空格,填满15字节为止;
2.数学00000000000
物理000000000 //ltrim(subject)之后的样子;
3.00000000000学数
000000000理物 //reverse(ltrim(subject))之后的样子。
[解决办法]
空格肯定是去了,你执行下面的语句:
select *, reverse(ltrim(subject)), len = datalength(reverse(ltrim(subject))) from #