从id中删除第一个字符

esyap4oy  于 2021-06-15  发布在  Mysql
关注(0)|答案(2)|浏览(318)

我正在尝试使用 JOIN 但我有一份文件,上面的身份证第一个位置有一封信。我在做请求时需要省略它。列的值 service 等于 tbl2 没有“s”字符)。
以下是表格:
tbl1级

-------------------
| id    | service |
-------------------
| 58186 | S83968  |
| ...   | ...     |

tbl2型

-------------------
| id    | domain  |
-------------------
| 83968 | serv123 |
| ...   | ...     |

我尝试的是:

SELECT `domain` 
FROM `tbl2` 
INNER JOIN `tbl1`  
WHERE tbl2.id = tbl1.SUBSTR(service, 2)
AND id = '58186';

它返回一个错误:
.#1630-函数tbl1.substr不存在。检查参考手册中的“函数名解析和解析”部分
预期结果:

-----------
| domain  |
-----------
| serv123 |
2vuwiymt

2vuwiymt1#

你可以在下面尝试-你需要添加 SUBSTR(tbl1.service, 2) 不是 tbl1.SUBSTR(service, 2) ```
SELECT domain
FROM tbl2
INNER JOIN tbl1
WHERE tbl2.id = SUBSTR(tbl1.service, 2)
AND tbl1.id = '58186'

wr98u20j

wr98u20j2#

实际上我更喜欢加上 'S' 另一个id:

SELECT tbl2.`domain` 
FROM `tbl2` INNER JOIN
     `tbl1`  
     ON CONCAT('S', tbl2.id) = tbl1.service
WHERE tbl1.id = '58186';

这似乎是一个细微的差别。然而,在某些情况下 tbl2.id 可能是个数字。由于转换规则的原因,可能会出现类型转换错误(在某些数据库中)或意外结果(在mysql中),如果其中有(不匹配的)值 service 无法转换为数字。

相关问题