Sql 内部联接失败-不返回任何数据

Sql 内部联接失败-不返回任何数据,sql,inner-join,Sql,Inner Join,我在内部连接表和视图时遇到了一些问题。 该视图为pageviewforum,其中包含一列forumn_no varchar2和一列totalcount,这是每个论坛的总页面浏览次数 另一张桌子是 论坛:论坛没有字符(6),forumname varchar2(50) 我想输出带有forum\u no及其论坛名称的totalcount,但它不起作用 select forum.forumname, totalcount from pageviewforum inner join forum on

我在内部连接表和视图时遇到了一些问题。 该视图为
pageviewforum
,其中包含一列
forumn_no varchar2
和一列
totalcount
,这是每个论坛的总页面浏览次数

另一张桌子是
论坛
论坛没有字符(6),forumname varchar2(50)

我想输出带有
forum\u no
及其论坛名称的
totalcount
,但它不起作用

select forum.forumname, totalcount from pageviewforum 
inner join forum on pageviewforum.forum_no= forum.forum_no; 
上述查询返回无数据的错误消息。 我试着看看结果如何

select forum.forumname, totalcount from pageviewforum 
inner join forum on pageviewforum.forum_no > forum.forum_no;
数据出来了。我试着用like,但它也说没有数据。
我能做什么?

由于您将一个不确定大小的
varchar2
列与一个
char(6)
列连接在一起,因此您可能会遇到差异。如果这些列包含数字,为什么不使用数字类型(如INTEGER)来保存这些值?从长远来看,它将更加可靠。通常,连接柱在类型相同时工作最可靠。当它们属于不同类型时,您必须担心这两种类型是否足够兼容,以及它们是否进行了明智的比较

假设:特别是,一个CHAR(6)列是空白填充到全长的;除非DBMS去掉这些尾随空格,否则您可能永远不会得到一个CHAR(n)和一个VARCHAR(n)来比较相等,除非所有n个字符都在使用中。
比较有效,因为空格表示相等,但大于或小于仍然可以得出答案

意见:

  • 数据库中的列类型很重要
  • 一致性很重要

由于您将不确定大小的
varchar2
列与
char(6)
列连接在一起,因此您可能会遇到差异。如果这些列包含数字,为什么不使用数字类型(如INTEGER)来保存这些值?从长远来看,它将更加可靠。通常,连接柱在类型相同时工作最可靠。当它们属于不同类型时,您必须担心这两种类型是否足够兼容,以及它们是否进行了明智的比较

假设:特别是,一个CHAR(6)列是空白填充到全长的;除非DBMS去掉这些尾随空格,否则您可能永远不会得到一个CHAR(n)和一个VARCHAR(n)来比较相等,除非所有n个字符都在使用中。
比较有效,因为空格表示相等,但大于或小于仍然可以得出答案

意见:

  • 数据库中的列类型很重要
  • 一致性很重要

您能在
视图中添加查询吗
?您是否检查了两个
论坛编号
列中的现有值?似乎没有常见的值…请尝试以下操作:从pageviewforum中选择forum.forumname、pgfrm.totalcount pgfrm内部加入pgfrm上的forum frm。forum\u no=frm.forum\u no;你注意到你加入了不同数据类型的列了吗?啊,如果我把它转换成字符(pageviewforum.forum\u no)并与forum.forum\u no进行比较,它会起作用吗?你能在你的
视图中添加查询吗?你检查了两个
forum\u no
列中的现有值了吗?似乎没有常见的值…请尝试以下操作:从pageviewforum中选择forum.forumname、pgfrm.totalcount pgfrm内部加入pgfrm上的forum frm。forum\u no=frm.forum\u no;你注意到你加入了不同数据类型的列了吗?啊,如果我把它转换成字符(pageviewforum.forum_no)并与forum.forum_no进行比较,它会起作用吗?@MarkBannister:Sorta-它也转义到了其他DBMS中。@MarkBannister:Sorta-它也转义到了其他DBMS中。