Hive SQL:如何将数字连接到一串分隔数字

时间:2014-07-22 17:46:43

标签: sql hive

我需要通过ID连接两个表,其中一个ID存储为数字(即12345),另一个ID存储为管道分隔的字符串(即12345 | 12346 | 12347)。有没有快速的方式加入这两个?谢谢!

**如果数字ID(12345)在数字字符串中(12345 | 12346 | 12347),我想我应该说加入。理论上,这个例子将加入,因为12345在管道分隔的字符串中。

2 个答案:

答案 0 :(得分:1)

这适用于Hive

    package main

    import (
        "github.com/davecgh/go-spew/spew"
        "gopkg.in/yaml.v2"
        "io/ioutil"
    )

    type Config struct {
        Hosts        string `yaml:hosts`
        Gather_facts string `yaml:gatherfacts`
        Remote_user  string `yaml:remoteuser`
        Name         string `yaml:names`
        Tasks        []struct {
            Name    string `yaml:name`
            Apt_key struct {
                Url   string `yaml:url`
                State string `yaml:url`
            } `yaml:apt_key`
            Become string `yaml:become`
            Command string `yaml:command`
        }
    }

    func main() {
        file, err := ioutil.ReadFile("/home/bane/Desktop/go/a.yml")
        if err != nil {
            panic(err)
        }
        var config Config
        yaml.Unmarshal(file, &config)
        // spew.Dump(config)
        spew.Dump(config.Tasks[0])
        spew.Dump(config.Tasks[1])
    }

答案 1 :(得分:0)

我不清楚你是指SQL还是HiveQL。

  

有没有快速的方式加入这两个?

不,不是真的。

您的数据库架构违反了第一范式。加入这些表格会很慢且容易出错。

对于DB-agnostic,尝试:

SELECT *
FROM Table1 t1
INNER JOIN Table2 t2
    ON  t2.id LIKE ('%' + CAST(t1.id as varchar) + '%')