代码之家  ›  专栏  ›  技术社区  ›  Ali Sheikhpour

SQL查询未返回所需结果

sql
  •  0
  • Ali Sheikhpour  · 技术社区  · 6 年前
    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 回复  |  直到 6 年前
        1
  •  1
  •   Gordon Linoff    6 年前

    这是您的查询(有一些外观更改):

    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'

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

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

    通常隐藏字符在字符串的开头或结尾处构成空格。请注意,隐藏字符可能在 LIKE 模式。

    在这种情况下 目的地 是您(或应用程序)为问题舍入的浮点或定点数字。浮点数和定点数字都将准确表示整数123。因此,假设列中存储的是一个接近123的数字,而不是确切的123。