我正在使用SSIS包将数据从Excel加载到SQL数据库。由于空单元格中有一些隐藏的字符,因此我的SSIS包失败,因此我需要将这些空单元格替换为null或删除/删除隐藏的字符。我的Excel列的格式设置为“数字”。任何帮助,将不胜感激。
答案 0 :(得分:0)
听起来您的数据中有不必要的空格。如果数据已经被单元格分隔,我将格式切换为“常规”,然后使用TRIM函数。如果是整个单元格都需要删除,我将单击“ Go to Special”(找到特殊内容),找到一个选择,选择空白,然后将其删除。希望这会有所帮助!
答案 1 :(得分:0)
ASCII字符的组合在任何关系数据库中形成一个字符串。 例如:NULL被指定为ASCII字符0。 如果任何字符串值的前面都有CHAR(0),则该值将对人眼不可见。 同样,有许多不可见的隐藏字符。 我们仍然可以从中删除那些隐藏的字符
CREATE FUNCTION [dbo].[CleanupData2]
(
@nstring nvarchar(255)
)
RETURNS varchar(255)
AS
BEGIN
DECLARE @Result varchar(255)
SET @Result = ''
DECLARE @nchar nvarchar(1)
DECLARE @position int
SET @position = 1
WHILE @position <= LEN(@nstring)
BEGIN
SET @nchar = SUBSTRING(@nstring, @position, 1)
IF((ASCII(@nchar) BETWEEN 64 and 90) OR (ASCII(@nchar) BETWEEN 97 and 122) OR (ASCII(@nchar) BETWEEN 48 and 57) OR ASCII(@nchar) = 32)
BEGIN
SET @Result = @Result + @nchar
END
ELSE
BEGIN
DECLARE @asciichar varchar(10)
SET @asciichar = ASCII(@nchar)
SET @Result = @Result + REPLACE(@nchar,CHAR(@asciichar),'')
END
SET @position = @position + 1
END
RETURN @Result
END
GO