将列与列进行比较

时间:2012-05-24 21:22:42

标签: sql oracle11g

所以我在一个表(statename)中有一个列,如下所示: TBLOTHER(Statename的)

  • Hidalgo Federal Hwy 130
  • 墨西哥联邦高速公路130
  • Puebla Federal Hwy 130
  • Veracruz-Llave Federal Hwy 130

和另一个表中没有联邦公路号码的另一列,只有州名 TBLSTATE(名称)

  • Hidalgo
  • 墨西哥
  • 布拉
  • Veracruz-Llave

如何将tblstate(name)中的列与tblother(name)进行比较?我想根据名称相同,将TBLSTATE中不同列的值复制到TBLOTHER。谢谢

3 个答案:

答案 0 :(得分:3)

可能是这样的:

where tbl2.name like tbl1.name ||'%'

或者你可以做一些花哨的substr比较

答案 1 :(得分:2)

有趣。我会采取不同的方法

where substr(tblother.statename, 1, len(tblstate.name)) = tblstate.name

即,将两个字符串与实际状态名称的长度进行比较。

答案 2 :(得分:0)

如果TBLOTHER中的数据与此处的数据一样规则,我的猜测是剥离“联邦高速公路”位然后进行比较是最安全的,即

where tblstate.name = substr( tblother.statename, 
                              1, 
                              instr( tblother.statename, 'Federal Hwy' ) - 1 )

这比直接LIKE更多的工作,但如果你可能有像'Puebla'和Puebla-Foo这样的名字,其中一个包含另一个名称,这会有所帮助。