我会尽力尽可能清楚地表达我的问题。
我有表 A 和 B。两者都有一个名为 cod(int) 的字段,但在表 B 中,cod 有一个根据 cod 编号而变化的数字。
示例:
表A 鳕鱼=12345
表B 鳕鱼=123459
或者
表A 鳕鱼=1234
表B 鳕鱼=12349
我尝试使用以下查询:
SELECT a.cod, a.qtd, a.vlr, a.status, b.desc
FROM tableA a
INNER JOIN tableB b ON SUBSTR(b.cod,1,LENGTH(a.cod))=a.cod
WHERE a.coddistrib=2544 AND a.nrolote=41862 AND a.nropedido=5
GROUP BY a.cod
问题是 cod 长度可以是 4 或 5,没有数字。所以下面两个说法都是正确的:
SUBSTR(123456,1,5)=12345
SUBSTR(123456,1,4)=1234
我想到了类似 IF(LENGTH(b.cod) = LENGTH(a.cod)+1, ) 的东西,但我不知道这如何在查询中工作。
有什么建议可以解决这个问题吗?
最佳答案
试试这个:
SELECT a.cod, b.cod codb
FROM
A INNER JOIN
B ON LENGTH(a.cod) + 1 = LENGTH(b.cod) AND
SUBSTR(b.cod,1,LENGTH(a.cod)) = a.cod
关于php - 具有 Join 和 IF 条件的 MySQL SUBSTR 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20049125/