我有两个包含文件列表的表:table1有column1,文件名以字符串'STO-'开头,后跟字符串模式。所以总的来说,字符串有16个字母数字字符(破折号是20个字符的字符串)。 这类似于table2,column1中的相同文件名字符串。然而,问题是在第一个表中还有附加到该20位数字符串的附加文本和字符。我试图匹配这些20位字符串匹配的两个表的结果,以及表中的其他信息。我在表中找到了大量关于模式匹配的信息,但没有比较两个表。希望我能解释自己,并提供一个例子来帮助:
TABLE1.Column1包含文件名'STO-100-XX-XXXX-XXXX_Text.pdf'
TABLE2.Column2包含文件名“STO-100-XX-XXXX-XXXX.pdf”和TABLE2.Column3 ='Y'
所以,我再次尝试查看TABLE1中的文件列表,其中前20个字母数字字符串与TABLE2匹配。
答案 0 :(得分:1)
SELECT * from TABLE1 t1
INNER JOIN TABLE2 t2
ON SUBSTRING(t1.Column1, 1, 20) = SUBSTRING(t2.Column2, 1, 20)
(在SQL Server 2005上测试过,但我相信SUBSTRING是一个ANSI SQL函数,因此应该适用于大多数数据库)。
此外,您的问题有点不清楚,但如果您还想根据第3列限制结果,那么您只需执行
SELECT * from TABLE1 t1
INNER JOIN TABLE2 t2
ON SUBSTRING(t1.Column1, 1, 20) = SUBSTRING(t2.Column2, 1, 20)
WHERE t2.Column3 = 'Y'