我将Excel表中的数据导入到SQL中,很多字段的开头和结尾都有空格。
我试过
update Table_Names set Name_ID = replace(Name_ID, ' ', '')
和
update Table_Names set Name_ID = LTRIM(Name_ID)
和
Update TableName set Name_ID = LTRIM(RTRIM(Name_ID))
其中每一个都返回了受影响的行数。但是当我再次选择这些字段时,它们在开头和结尾仍然有空格。
知道为什么会这样,以及如何解决它?
任何帮助将不胜感激
答案 0 :(得分:1)
可能存在制表符,但不会消除。试试这个:
update tablename set name_id = replace(name_id, char(9), '')
有时也会导入回车和换行。你可以使用char(10)和char(13)来遵循相同的模式来消除它们。
答案 1 :(得分:1)
一般来说,标签,换行符,回车是罪魁祸首,但如果遇到无法删除的空格字符,则可以创建如下函数:
CREATE FUNCTION [dbo].[fn_Trim]
(
@str as varchar(1000)
)
RETURNS varchar(1000)
AS
BEGIN
--Replace all whitespace characers with Characer 32 whitespace
--NULL
Set @str = Replace(@str,CHAR(0),CHAR(32));
--Horizontal Tab
Set @str = Replace(@str,CHAR(9),CHAR(32));
--Line Feed
Set @str = Replace(@str,CHAR(10),CHAR(32));
--Vertical Tab
Set @str = Replace(@str,CHAR(11),CHAR(32));
--Form Feed
Set @str = Replace(@str,CHAR(12),CHAR(32));
--Carriage Return
Set @str = Replace(@str,CHAR(13),CHAR(32));
--Column Break
Set @str = Replace(@str,CHAR(14),CHAR(32));
--Non-breaking space
Set @str = Replace(@str,CHAR(160),CHAR(32));
Set @str = LTRIM(RTRIM(@str));
Return @str
END
GO
然后使用它将列更新为:
Update Table_Names
set Name_ID = dbo.fn_Trim(Name_ID)