我试图运行下面的SQL以返回记录,其中“ a.PatientCommentText”包含一个“不良关键字”,如下面的“ b.Keyword”所示。我不认为这会返回所有内容,因为下面的查询仅返回253条记录,而与此相反(其中charindex(b.Keyword,a.PatientCommentText)= 0返回7,378条记录,但PES_Data的总数为9,821。会希望这两种情况的总和等于PES_Data的记录数。我在做什么错了?
返回253条记录
select a.* from PES_Data a
inner join Bad_Keywords b on 1=1
where charindex(b.Keyword, a.PatientCommentText) <> 0
返回7,378条记录
select a.* from PES_Data a
inner join Bad_Keywords b on 1=1
where charindex(b.Keyword, a.PatientCommentText) = 0
但是下面返回9,821条记录
select a.* from PES_Data a
答案 0 :(得分:4)
您似乎会有一些PatientCommentText
的{{1}}值。
尝试将其添加到您的结果中:
NULL
此外,对于包含多个“坏词”的注释,您可能会得到重复。我不希望这些数字加起来,除非您知道没有重复项。
答案 1 :(得分:0)
+1戈登·利诺夫(Gordon Linoff)的答案。
DECLARE @tblA TABLE(Base VARCHAR(100));
DECLARE @tblB TABLE(Reference VARCHAR(100));
-- Total 7 rows
INSERT INTO @tblA VALUES
('abcdaa')
,('bcdeab')
,('cdefbb')
,('defgbc')
,('efghcc')
,('fghddd')
,(NULL)
select count(*) from @tblA where CHARINDEX('aa',Base) <> 0 -- Returns 1
select count(*) from @tblA where CHARINDEX('aa',Base) = 0 -- Returns 5
select count(*) from @tblA where CHARINDEX('aa',Base) IS NULL -- Returns 1