从ID中删除第一个字符

时间:2018-12-21 09:46:05

标签: mysql sql

我正在尝试使用JOIN发出SQL请求,但是我有一个文件,其中ID的第一个位置包含字母。我在执行请求时需要忽略它。 service列的值等于tbl2的ID,不带'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 |

2 个答案:

答案 0 :(得分:2)

您可以在下面尝试-您需要添加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'

答案 1 :(得分:2)

我实际上更喜欢将'S'添加到其他ID:

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

这似乎有点细微差别。但是,在某些情况下,tbl2.id可以是数字。由于转换规则的原因,如果service中的任何(不匹配)值不能转换为a,则可能会发生类型转换错误(在某些数据库中)或意外结果(在MySQL中)。数字。