SQLSERVER中使用函数去掉数据中的空格
某天查询两个表的数据,用一个inner join联接来找出两个表中NAME相同的记录,但是在查找过程中发现
有一些记录select不出来
我这里用A表和B表来代替我那天的两个表,然后插入一些数据模拟那两个表中的情况
1 USE [pratice]
2 GO
3 CREATE TABLE A(ID INT,NAME NVARCHAR(200))
4 GO
5 CREATE TABLE B(ID INT,NAME NVARCHAR(200))
6 GO
7
8 --------------------------------------
9 INSERT INTO [dbo].[A] ( [ID], [NAME] )
10 SELECT 1,' 你好1 ' UNION ALL --name值两边有空格
11 SELECT 2,'你好2 ' UNION ALL --name值右边有空格
12 SELECT 3,' 你好3' UNION ALL --name值左边有空格
13 SELECT 4,'你好4' --name值两边没有空格
14
15 INSERT INTO [dbo].[B] ( [ID], [NAME] )
16 SELECT 1,'你好1' UNION ALL
17 SELECT 2,'你好2' UNION ALL
18 SELECT 3,'你好3' UNION ALL
19 SELECT 4,'你好4'
我在A表中插入了4种情况的记录,分别是:name值两边有空格,name值右边有空格,name值左边有空格,name值两边没有空格
然后我用inner join找出两个表中NAME相同的记录,发现有些记录select不出来
1 SELECT * FROM [dbo].[A] AS a INNER JOIN [dbo].[B] AS b ON a.[NAME]=b.[NAME] ORDER BY [a].[NAME] ASC
![](http://images.cnitblog.com/blog/257159/201307/25220256-707d2035e3be4646a10ab7cb5e357b75.jpg)
只有id为2,4这两条记录select出来了
我把两个表中的记录select出来,当然实际情况是表中记录非常多
1 SELECT * FROM [dbo].[A]
2 SELECT * FROM [dbo].[B]
![](http://images.cnitblog.com/blog/257159/201307/25220511-e61ed209879b40a9a54632f56adc8be8.jpg)
我是怎麽找出端砚的??本人刚开始觉得不对劲,就用下图的方法把A表中的记录放到SSMS里查询窗口中,大家可以看一下下面的图片
![](http://images.cnitblog.com/blog/257159/201307/25221749-b75d2d1ff9e3443ea4d43c18f78f52ca.gif)
就这样,把表中的数据copy到查询窗口的单引号字符中'' ,可以看出A表中某些数据两边是有空格的,某些数据一边是有空格的,而B表中
数据都没有空格,我才发现了这个规律
然后我上网查找了一下msdn和网上的资料,看SQLSERVER有没有像C#那样的trim函数,结果发现没有。
后来在博客园里发现一篇博客
sql语法中没有直接去除两头空格的函数,但有ltrim()去除左空格rtrim()去除右空格。
合起来用就是sql的trim()函数,即select ltrim(rtrim(UsrName))
将SQL改写成这样
1 SELECT *
2 FROM [dbo].[A] AS a
3 INNER JOIN [dbo].[B] AS b ON LTRIM(RTRIM(a.[NAME])) = LTRIM(RTRIM(b.[NAME]))
4 ORDER BY [a].[NAME] ASC
能顺利查出结果了
![](http://images.cnitblog.com/blog/257159/201307/25222318-6c735efaf6b84f5889b3caa720524919.jpg)
后来发现用like关键字也可以
1 SELECT *
2 FROM [dbo].[A] ,[dbo].[B] WHERE [A].[NAME] LIKE '%'+[B].[NAME]+'%'
![](http://images.cnitblog.com/blog/257159/201307/25222538-2f6a539567b0447db1066d8a1a49c5dc.jpg)
感谢http://www.cnblogs.com/lyhabc/articles/3215342.html