这个varchar2列数据Oracle有什么问题

时间:2012-08-16 19:03:29

标签: sql oracle

我有一个SELECT语句:

SELECT * 
FROM TABLE1 t1,TABLE2 t2 
WHERE t1.tid=t2.tid 
    AND t1.Col21 IN   ('103271','103280','107114','108083','116762','118462','119233','120562','125833','129706')

这不会返回任何数据,但我知道Col21中有上述所有值的记录。

我尝试过修剪(Col21),但仍然没有数据。

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:1)

首先,为了安心起见,请验证Col21中是否存在与此查询匹配的行。

SELECT * 
  FROM TABLE1 t1
 WHERE t1.Col21 IN ('103271','103280','107114','108083','116762','118462',
                    '119233','120562','125833','129706')

如果返回行,那么您呈现的查询未返回任何内容的原因是由于针对TABLE2的连接。也许你打算做一个外连接?如果是这样,尝试这样的事情:

SELECT * 
  FROM TABLE1 t1,TABLE2 t2 
 WHERE t1.tid=t2.tid(+)
   AND t1.Col21 IN ('103271','103280','107114','108083','116762','118462',
                    '119233','120562','125833','129706')

这将允许t2.tid中的空值,其中TABLE2中没有与TABLE1中的行对应的行,从而保证始终返回TABLE1中的所有匹配行。< / p>