【问题标题】:MySQL SUBSTR function with Join and IF conditions具有 Join 和 IF 条件的 MySQL SUBSTR 函数
【发布时间】:2013-11-18 13:33:47
【问题描述】:

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

我有表 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

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

SUBSTR(123456,1,5)=12345

SUBSTR(123456,1,4)=1234

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

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

【问题讨论】:

    标签: php mysql sql join substr


    【解决方案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
    

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

    【讨论】:

      【解决方案2】:

      用途:

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

      取决于',''.' 的数字符号变化

      【讨论】:

        猜你喜欢
        • 2011-02-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-23
        相关资源
        最近更新 更多