2

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

  • 伊达尔戈联邦高速公路 130
  • 墨西哥联邦高速公路 130
  • 普埃布拉联邦高速公路 130
  • 韦拉克鲁斯-拉夫联邦高速公路 130

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

  • 伊达尔戈
  • 墨西哥
  • 普埃布拉
  • 韦拉克鲁斯-拉夫

如何将 tblstate(name) 中的列与 tbother(name) 进行比较?我想基于相同的名称将 TBLSTATE 中不同列的值复制到 TBLOTHER ..谢谢

4

3 回答 3

3

也许是这样的:

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

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

于 2012-05-24T21:25:06.687 回答
2

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

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

也就是说,将两个字符串比较到实际状态名称的长度。

于 2012-05-24T21:45:20.123 回答
0

如果里面的数据和TBLOTHER这里一样有规律,我的猜测是去掉“Federal Hwy”位然后比较是最安全的,即

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

这比做直道要多一些工作,LIKE但如果你可能有像“Puebla”这样的名字并且Puebla-Foo其中一个包含另一个,它会有所帮助。

于 2012-05-24T21:39:13.230 回答