【发布时间】:2016-04-18 14:46:33
【问题描述】:
我有一个用户输入表单,由于我自己的愚蠢疏忽,它允许用户输入空字符串,以此来识别新数据集与哪组数据相关......
这导致使用空标识符或由多个“空格”字符组成的标识符记录多个数据集。这些对于用户来说是无法区分的,因为它们都只是显示为空,但是我不认为这是一个编程问题,因为字符串不同。
然而,当我尝试检索这些数据集时,我得到的所有数据集都只有空格作为标识符。
基本上可以将问题隔离如下,为什么这个查询会为每个 SELECT 生成 4 行结果,而不仅仅是实际匹配的结果?
DECLARE @testTable TABLE ([NumberOfSpaces] INT, [SpaceString] VARCHAR(50))
INSERT INTO @testTable ([NumberOfSpaces],[SpaceString]) VALUES
(0,''),
(1,' '),
(2,' '),
(3,' ')
SELECT * FROM @testTable WHERE [SpaceString] = ''
SELECT * FROM @testTable WHERE [SpaceString] = ' '
SELECT * FROM @testTable WHERE [SpaceString] = ' '
SELECT * FROM @testTable WHERE [SpaceString] = ' '
这更多是出于好奇,因为我的实际修复需要删除仅包含空格的标识符。
【问题讨论】:
-
HoneyBadger 上面的评论是我一直在寻找的答案 - 不幸的是,您无法将评论标记为答案..
-
删除评论,替换为答案。
标签: sql sql-server whitespace