日期:2014-05-16  浏览次数:20639 次

去除不可见类似空格的字符
表gshangju有字段dwmc,表中的记录在这个字段前一个空格(至少看上去是空格)我运行以下去除空格的命令 
select ASCII(SUBSTRING(dwmc,1,1)) from gshangju
得到的结果
200
201
205
63


数据库里有很多记录,我怎么把这样类似空格的字符去掉呢,这到底是什么字符呢
------解决方案--------------------
数据去空格后都是数字的话

CREATE FUNCTION DBO.GET_NUMBER2(@S VARCHAR(100))
RETURNS VARCHAR(100)
AS
BEGIN
WHILE patindex('%[^0-9]%',@S) > 0
BEGIN
set @s=stuff(@s,patindex('%[^0-9]%',@s),1,'')
END
RETURN @S
END
GO

create table gshangju (dwmc nvarchar(20))
insert into gshangju values('200 ')
insert into gshangju values('2 01')
insert into gshangju values(' 205')
insert into gshangju values(' 6 3')

select DBO.GET_NUMBER2(dwmc)
from gshangju
/*
200
201
205
63
*/


提取数字
------解决方案--------------------
字符串中用ltrim和rtrim去不掉的空格是制表符,SQL可以直接识别制表符的。
比如 select CHARINDEX(' ','a b'),就可以返回2,在代码那里直接用tab键来输入一个制表符