繁体   English   中英

具有Join和IF条件的MySQL SUBSTR函数

[英]MySQL SUBSTR function with Join and IF conditions

我会尽量保持清楚,看看我是否能表达我的问题。

我有表A和B。它们都有一个名为cod(int)的字段,但是在表B中,cod有一个数字,该数字根据cod编号而变化。

范例:

表A编码= 12345

表B cod = 123459

要么

表A cod = 1234

表B cod = 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,)的方法,但是我不知道如何在查询中使用它。

有什么解决这个问题的建议吗?

采用:

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

根据数字符号,将','更改为'.'

尝试这个:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM