我有一个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似乎还有另一个值。
答案 0 :(得分:1)
根本原因是您在将值插入数据库之前没有修剪值。以下示例可帮助您确定哪些列包含数据。我正在做以下事情:
示例代码:
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