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