【问题标题】:Comparing Column to column比较列与列
【发布时间】:2012-05-24 21:22:42
【问题描述】:

所以我在一个表(状态名)中有一个列,如下所示: TBLOTHER(州名)

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

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

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

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

【问题讨论】:

    标签: sql oracle11g


    【解决方案1】:

    可能是这样的:

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

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

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

        这比直接写一个LIKE 需要更多的工作,但如果你可以使用像“Puebla”和Puebla-Foo 这样的名字,其中一个包含另一个,这会有所帮助。

        【讨论】:

        • @aF - 但LIKE 将匹配TBLSTATE 中的PueblaPuebla Federal Hwy 130TBLOTHER 中的Puebla-Foo Federal Hwy 130。据推测,希望只有Puebla 匹配Puebla Federal Hwy 130,并且只有Puebla-Foo 匹配Puebla-Foo Federal Hwy 130
        • 我无法从问题中推测(不是来自美国 ^^)。
        猜你喜欢
        • 2021-07-14
        • 1970-01-01
        • 1970-01-01
        • 2018-11-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-22
        相关资源
        最近更新 更多