0
ID  Dst Channel                             destination
1                                           123
2                                           123
3   SIP/5raghami-00043236                   91026
5   SIP/5raghami-00043232                   91132
6   SIP/107-00043230                        123
7   Local/123@from-queue-00006326;1         802

以下查询仅打印 6,7。我想要的输出是 1,2,6,7

    SQL = "SELECT id,duration FROM result where destination='123' or (destination='802' and [Dst Channel] like '%Local/123%')"
    RS.Open SQL, con
    while not rs.eof 
        response.write rs("id")
    rs.movenext
    wend
    rs.close

我认为第 1 行和第 2 行被忽略,因为 [Dst Channel] 为空。我写的查询有问题吗?(也许有问题)

4

1 回答 1

1

这是您的查询(有一些外观变化):

SELECT r.duration
FROM result r 
WHERE r.destination = '123' OR
      (r.destination = '802' AND r.[Dst Channel] LIKE '%Local/123%');

您的查询正是您想要的。如果 ids 1 和 2 没有被返回,那是因为destination包含的东西不是'123'.

最可能的假设是这destination是一个字符串。如果是这样,它可能包含“隐藏”字符。您可以检查此版本:

SELECT r.duration
FROM result r 
WHERE r.destination LIKE '%123%' OR
      (r.destination = '802' AND r.[Dst Channel] LIKE '%Local/123%');

通常隐藏字符在字符串的开头或结尾处以空格的形式出现。请注意,隐藏的字符可能在LIKE模式中。

在极不可能的情况下destination,您(或应用程序)已针对该问题进行了四舍五入的浮点数或定点数。浮点数和定点数都将准确地表示整数 123。因此,假设接近 123 的数字存储在列中,但不完全是 123。

于 2018-05-28T14:39:23.200 回答