Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在联接条件需要子字符串的情况下联接两个表_Sql_Oracle_Join - Fatal编程技术网

Sql 在联接条件需要子字符串的情况下联接两个表

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

我正在尝试连接两个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中选择*

在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,如本例所示