SQL查询没有返回所需的结果

时间:2018-05-28 14:34:35

标签: sql

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]为空。我写的查询有什么问题吗? (也许是有问题的问题)

1 个答案:

答案 0 :(得分:1)

这是您的查询(包含一些修饰):

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

您的查询正在完全您想要的内容。如果没有返回ID 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。