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

标签 php mysql sql join substr

我会尽力尽可能清楚地表达我的问题。

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

fiddle :http://www.sqlfiddle.com/#!2/6c26b/1

关于php - 具有 Join 和 IF 条件的 MySQL SUBSTR 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20049125/

相关文章:

php - 如何知道网站的原始国家/地区?

php - eval 函数访问数组时出现解析错误

php - 如何在不删除行或记录的情况下重命名和删除 mysql 列名?

mysql - 令人难以置信的慢 GitLab 与 MySQL

sql - 列值到标题 oracle

java - 如何使用 SimpleJdbcCall 同步调用存储过程

sql - 在Oracle SQL Developer中按相对路径执行脚本

php - 重新排列数组

php - MySQL 查询在 mysql 中返回行,但在 PHP 中返回空集

MySQL:奇怪的外键约束