1

我正在尝试使用该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 点/下午有值,和凌晨 2 点/下午。有的多,少的少,不重要。当我将查询更改为更具体(即只有 1 小时窗口或 LIKE “Lab.Raw.NTU”)时,我得到了所有数据。目前,这会输出所有标签的数据,我会同时获得早上 6 点的数据和下午 6 点的数据,但是某些值会丢失,例如下午 6 点的 Lab.Raw.NTU。如果我更改前一天或夜班的窗口,似乎还有其他数据丢失,所以我认为它不必与数据本身有关。LIKE 函数发生了一些奇怪的事情,但我不知道是什么。
除了喜欢之外,还有其他方法可以获得我想要的标记名吗?例如标记名 > Lab 和标记名 <= Labz?(这给了我一个错误,所以我认为不是)

请帮忙。

4

1 回答 1

0

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

DateTime >= convert(datetime, '20150811 6:00')
于 2016-06-29T16:23:54.220 回答