2012-05-24 300 views
2

所以我有一個表(Statename的),看起來像這樣的列: TBLOTHER(Statename的)柱之間比較

  • 伊達爾戈州聯邦高速公路130
  • 墨西哥聯邦高速公路130
  • 普埃布拉聯邦高速公路130
  • 韋拉克魯斯 - Llave聯邦高速公路130

,並在不同的表的另一列不存在菲德拉爾公路的數字,只是國家名稱 TBLSTATE(名稱)

  • 伊達爾戈
  • 墨西哥
  • 普埃布拉
  • 韋拉克魯斯 - Llave

我怎樣才能在tblstate比較列(名)到tblother(名字)?我想在不同的列的值TBLSTATE基於對名稱作爲same..thanks

複製到TBLOTHER

回答

3

也許是這樣的:

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

,或者你可以做一些花哨的SUBSTR比較

+0

+1我認爲這就夠了。 –

0

如果TBLOTHER的數據是定期,因爲它是在這裏,我的猜測是,這將是最安全的脫光'聯邦高速公路」位,然後比較,即

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

這比直接做一個LIKE工作多一點,但是如果你可能有'Puebla'和Puebla-Foo這樣的名字,那麼這個名字會包含另一個。

+0

'Like'也可以對付'Puebla-Foo'。 –

+0

@aF - 但'LIKE'可以在'TBLSTATE'中將'Puebla'與'Puebla Federal Hwy 130'和'Puebla-Foo Federal Hwy 130'在'TBLOTHER'中匹配。據推測,只有Puebla才能匹配Puebla Federal Hwy 130和只有Puebla-Foo來匹配Puebla-Foo Federal Hwy 130。我不能從問題設想的 –

+0

(不是來自美國^^)。 –

2

有趣。我會採取不同的方法

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

也就是說,比較兩個字符串直到實際狀態名稱的長度。

+0

工作!謝謝。 – unknownid