Sql 在联接条件需要子字符串的情况下联接两个表
我正在尝试连接两个oracle数据库表,其中要连接的列包含稍微不同的数据 例如,表A有一列“ref”,表B有一列“id” A.ref包含A1234567890B之类的数据,B.id包含123456780格式的数据 我已经尝试根据以下查询将两者连接起来Sql 在联接条件需要子字符串的情况下联接两个表,sql,oracle,join,Sql,Oracle,Join,我正在尝试连接两个oracle数据库表,其中要连接的列包含稍微不同的数据 例如,表A有一列“ref”,表B有一列“id” A.ref包含A1234567890B之类的数据,B.id包含123456780格式的数据 我已经尝试根据以下查询将两者连接起来 SELECT * FROM A INNER JOIN B ON SUBSTR(A.ref, 2,10) = B.id; 但当我知道有来自这个子字符串的匹配数据时,这并没有返回任何结果 有什么想法吗?您可以尝试以下方法: 从内部连接B中选择* 在r
SELECT * FROM A INNER JOIN B
ON SUBSTR(A.ref, 2,10) = B.id;
但当我知道有来自这个子字符串的匹配数据时,这并没有返回任何结果
有什么想法吗?您可以尝试以下方法:
从内部连接B中选择*
在regexp_substr(A.ref,“^[:alpha:]+([:digit:]+[:alpha:]+$”,1,1,'c',1)=B.id
我最终能够通过将substr(A.ref,2,10)填充到12个字符来解决这个问题。发布您的查询看起来不错。尝试查看substr返回的内容。不要忘记它是基于1的。列类型是什么?固定长度字符字段有时会“行为不检”。给出您的示例(A1234567890B
和123456789
)查询。每个列的数据类型是什么?使用varchar2或(如果无法更改数据类型)使用trim,如本例所示