【发布时间】:2015-08-13 17:34:44
【问题描述】:
我正在尝试使用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 和 2am/pm。有的多,少的少,不重要。当我将查询更改为更具体(即只有 1 小时窗口或 LIKE “Lab.Raw.NTU”)时,我得到了所有数据。目前,这会输出所有标签的数据,我会同时获得早上 6 点的数据和下午 6 点的数据,但是某些值会丢失,例如下午 6 点的 Lab.Raw.NTU。如果我更改前一天或夜班的窗口,似乎还有其他数据丢失,所以我认为它不必与数据本身有关。 LIKE 函数发生了一些奇怪的事情,但我不知道是什么。
除了喜欢之外,还有其他方法可以获得我想要的标记名吗?例如标记名 > Lab 和标记名
请帮忙。
【问题讨论】:
-
您确定它缺少数据还是只是以与您预期不同的顺序返回结果?也许您的界面限制了返回的行数。
-
如果您想包含时间为上午 6 点至下午 6 点的 18:00:30 的记录。数据,那么您将需要使用
AND DateTime < '20150811 18:01。 -
您是从 SQL Management Studio 运行该脚本还是检查您的最终应用程序的结果?
-
是的,我的数据正好是下午 6 点,但我的原始查询是从午夜到午夜,我仍然遇到问题。我在 SQL Management Studio 中得到了相同的结果。我确实觉得这可能与返回的行有关,但是 24 小时查询返回 200 行,只是缺少一些项目。我会说这是我没有制作的专有历史数据库。他们有没有可能弄乱了一些东西来歪曲结果?
-
你能举几个更详细的例子吗?比如向我们展示一个返回所有内容的查询,然后向我们展示排除某些行的扩展查询。除非您有语法错误,否则我看不出为什么会发生此问题。
标签: sql sql-like wonderware