如何将具有隐藏字符的空白/单元格转换为空值或以其他方式删除隐藏字符

Posted

技术标签:

【中文标题】如何将具有隐藏字符的空白/单元格转换为空值或以其他方式删除隐藏字符【英文标题】:How to convert blank/cells that have hidden characters to nulls or otherwise remove hidden characters 【发布时间】:2019-09-24 21:22:21 【问题描述】:

我正在使用 SSIS 包将数据从 Excel 加载到 SQL 数据库。由于空单元格中有一些隐藏字符,我的 SSIS 包失败,因此我需要将这些空单元格替换为空值或删除/删除隐藏字符。我的 excel 列被格式化为“数字”。对此的任何帮助将不胜感激。

【问题讨论】:

你有什么样的隐藏角色?它们一致吗?有问题的数据样本会有所帮助。 亲爱的 Alexherm 非常感谢您对我的帮助;目前我有一个 SSIS 包来将数据从 Excel 电子表格加载到 SQL 数据库。我每天必须处理大约 25-30 个电子表格。我从不同的人那里收到了这些电子表格,其中一些未能加载数据。这些 excel 文件有空白单元格/列,当我手动删除空白单元格的内容时,文件将起作用,这意味着这些空白单元格上有一些隐藏字符。我不太确定它们是哪种类型的隐藏字符。 因此配置包以执行您手动执行的相同任务。或者将数据加载到不会使特殊字符失败的临时表中(可能使列 char 而不是数字),然后创建一个例程来清理记录,然后加载到主表中 【参考方案1】:

听起来您的数据中有不必要的空格。如果数据已经被单元格分隔,我会将格式切换为“常规”,然后使用 TRIM 函数。如果是需要删除的整个单元格,我会在查找选项下单击“转到特殊”,选择空白,然后将其删除。希望这会有所帮助!

【讨论】:

【参考方案2】:

http://www.asciitable.com/

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

【讨论】:

以上是关于如何将具有隐藏字符的空白/单元格转换为空值或以其他方式删除隐藏字符的主要内容,如果未能解决你的问题,请参考以下文章

如何保持电源查询的空返回值?

如何将 Excel 列转换为忽略空白单元格的新范围

导入到 phpmyadmin 时如何设置空值?

如何将excel表中的空值转换成有效值呢?

我的excel2016打开以后是空白页,要点击编辑栏之后才能显示内容,怎么修复?

如何把excel中的空白转换为数字