具有Join和IF条件的MySQL SUBSTR功能

时间:2013-11-18 13:33:48

标签: php mysql sql join substr

我会尽量清楚地看看我是否可以表达我的问题。

我有表A和B.两个都有一个名为cod(int)的字段,但在表B中,cod有一个根据鳕鱼编号变化的数字。

例:

表A. 鳕鱼= 12345

表B. 鳕鱼= 123459

OR

表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

问题是鳕鱼长度可以是4或5而没有数字。所以下面的两个陈述是正确的:

SUBSTR(123456,1,5)= 12345

SUBSTR(123456,1,4)= 1234

我想过像IF(LENGTH(b.cod)= LENGTH(a.cod)+1,)但我不知道如何在查询中工作。

有任何解决此问题的建议吗?

2 个答案:

答案 0 :(得分:0)

使用:

SUBSTR(b.cod,1,substr(a.cod,1,instr(a.cod,',')))

取决于','

的数字符号更改'.'

答案 1 :(得分:0)

试试这个:

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

小提琴:http://www.sqlfiddle.com/#!2/6c26b/1