如何在MSSQL字段中打印出所有字符 - CR LF问题

时间:2016-10-26 17:01:10

标签: sql-server char

我有一个MSSQL表,一直在字段中获取'BLANK'条目 - 我不确定这是以编程方式还是由于用户输入而发生的。它将显示为一个小块'BLOCK',但字段否则看起来是空白的。如果我将COPY和PASTE复制到notepad ++并显示行字符,我会得到一个空格和一个CRLF(有时候不止一个)。我想知道这个领域的所有内容。在记事本中没有显示CRLF之后似乎还有另一个值。如果我使用

搜索该字段
WHERE (e_text LIKE '% ' + CHAR(13) + '' + CHAR(10) + '%')

我得到了结果。如果我使用

搜索
WHERE (e_text LIKE ' ' + CHAR(13) + '' + CHAR(10) + '%')

我得到了结果。

但如果我使用:

搜索
WHERE (e_text LIKE '% ' + CHAR(13) + '' + CHAR(10) + '')

我没有得到结果。因此,最后不使用通配符,SQL似乎还有另一个值。

SQL DISPLAY and NOTEPAD++

1 个答案:

答案 0 :(得分:1)

根本原因是您在将值插入数据库之前没有修剪值。以下示例可帮助您确定哪些列包含数据。我正在做以下事情:

  1. 用空格替换换行符
  2. 修剪左侧的多余空格
  3. 修剪右边的空间
  4. 那是否等于空字符串?如果是这样,那么这里什么也没有。
  5. 示例代码:

    DECLARE @tbl TABLE (field1 varchar(100));    
    INSERT INTO @tbl
    VALUES 
    ('I am not null'),
    ('   '),
    (' 
    
    '),
    ('not null with new line
    
    '),
    ('not null with trailing spaces        ');
    
    
    SELECT *, CASE 
    WHEN LTRIM(RTRIM(REPLACE(REPLACE(field1, CHAR(13), ''), CHAR(10), ''))) = '' THEN 'column can be trimmed to nothing' ELSE 'column has something' end
    FROM @tbl
    

    enter image description here