需要在一个列上使用不同长度的子字符串连接两个表,其长度在第二个表中声明



我需要连接2个表,我需要在表1中的列子字符串。未知的是连接到表2的子字符串的长度。前几个数字是不同长度的连接键。表2确实说明了长度,并将作为指示符,在该指示符上需要将条目添加特定长度的子字符串。第二个表的固定长度为9,因此也需要添加子字符串(这很容易做到)。表1是我的问题。表2中的长度列告诉您要使用多少ShortRef,以及表1中要使用多少子字符串RefNr,然后成为连接。然而,我不确定如何在SSMS中做到这一点,或者是否可能。

由于表2通知了子字符串的大小,我目前没有看到解决方案,我不知道like是否会起作用,也不知道如何使用like来实现。

的例子:

TABLE 1
|RefNr           |
|----------------|
|1234567890101234|
|9876543210090876|
|1234569000100223|
TABLE 2
|ShortRef | Length | Name |
|---------|--------|------|
|123456789|8       |Alice |  
|123456909|8       |Cindy |
|987654999|6       |Ben   |
RESULTS SHOULD BE:
|RefNr           | Substr Table1&2 based on Length in Table2 | Name |
|----------------|-------------------------------------------|------|
|1234567890101234| 12345678                                  |Alice |                                                            
|9876543210090876| 987654                                    |Ben   |                                                                     
|1234569000100223| 12345690                                  |Cindy |                                                                

表的示例

我不知道你是否想要这个,但是我用这个为示例表取了正确的输出。

SELECT RefNr
,tb2."Substring Table1 based on length in Table2"
,tb2.Name
FROM Table1
INNER JOIN
(SELECT SUBSTRING(ShortRef, 0, Length+1) as "Substring Table1 based on length in Table2",
Name,
Length
FROM Table2) as tb2
ON SUBSTRING(RefNr, 0, tb2.Length + 1) = tb2."Substring Table1 based on length in Table2"

看起来您想用字符串操作将表连接在一起:

select t1.*, left(t2.refnr, t2.length), t2.name
from table1 t1 join
table2 t2
on left(t2.refnr, t2.length) = left(t1.refnr, t2.length);

相关内容

  • 没有找到相关文章

最新更新