SQL Like函数Broken?还是有限的?

时间:2015-08-13 17:34:45

标签: sql sql-like wonderware

我正在尝试使用LIKE函数来获取具有相似名称的数据。一切看起来都很好,但当我收到超过20行数据时,我得到的数据缺少一些值。

我有一个非常基本的查询。我只想要以Lab开头的数据,理想情况是全天或至少12小时。下面的代码遗漏了一些数据,我无法分辨出它选择跳过的模式。

SELECT History.TagName, DateTime, Value  FROM History 
WHERE History.TagName like ('Lab%') 
AND Quality = 0
AND wwRetrievalMode = 'Full' 
AND DateTime >= '20150811 6:00'
AND DateTime <= '20150811 18:00'

为了让您了解我要提取的数据,我有Lab.Raw.NTU,Lab.Raw.Alk,Lab.Sett.NTU等。大多数数据的值应该是早上6点/晚上午10点。 / pm,和2 am / pm。有些人有更多,有些人少,不重要。当我将查询更改为更具体(即仅1小时窗口或LIKE&#34; Lab.Raw.NTU&#34;)时,我获得了所有数据。目前,这将为所有标签吐出数据,我同时获得6am数据和6pm数据,但是某些值将丢失,例如下午6点的Lab.Raw.NTU。如果我改变前一天或夜班的窗口,似乎还有其他数据丢失,所以我不认为它必须与数据本身有关。使用LIKE函数时会发生一些奇怪的事情,但我不知道是什么 是否还有其他方法可以获得我想要的标记名?如Tagname&gt;实验室和标记名&lt; = Labz? (这给了我一个错误,所以我不这么认为)

请帮忙。

1 个答案:

答案 0 :(得分:0)

您似乎正在使用Like运算符;这可能是一个红鲱鱼。检查DateTime字段的数据类型。如果它是基于字符的,例如varchar,那么您正在进行字符串比较而不是日期比较,这可能会导致意外结果。尝试进行显式转换以确保将它们作为日期进行比较:

DateTime >= convert(datetime, '20150811 6:00')