首页 > 解决方案 > MySql 切断最后一个数字

问题描述

很抱歉问,但我试图从这个结果“219916#54 /0004112986”中获取最后 10 个数字

我使用的主要标准是 SUBSTR(TRENN,-11,10) 所以我只得到最后 10 个数字。我使用的查询是:

$sqlQuery = "SELECT b.NR_LE, b.NR_VP_EXTERN, b.PN FROM (SELECT DISTINCT NR_LE_1 FROM table WHERE lager = 'RA1' AND ID_KLIENT = 'IACTVK' AND ID_ARTIKEL <> 'VERSAND' AND MNG_FREI > 0 
AND NOT ((ORT ='STD' AND BEREICH ='WV') OR (ORT ='INV' AND BEREICH ='YV' AND PLATZ ='99'))) a,
(SELECT DISTINCT NR_LE, NR_VP_EXTERN, **SUBSTR(TRENN,-11,10)** AS PN FROM table WHERE NR_VP_EXTERN IS NOT NULL) b
WHERE a.NR_LE_1 = b.NR_LE 
ORDER BY b.NR_LE, b.NR_VP_EXTERN";

但不知何故,我得到了“/”的结果......就像“/000411298”一样,所以最后一个数字被切断了,取而代之的是前面有“/”,我不知道如何只取最后10个没有“/”的数字不知从何而来的前面..

所以上面查询的结果是:

NR_LE   "53638786"
NR_VP_EXTERN    "12FR03792"
PN     "/000411298"

我需要它:

NR_LE   "53638786"
NR_VP_EXTERN    "12FR03792"
PN     "0004112986"

谢谢你的帮助

标签: mysqlsql

解决方案


你可以使用right()喜欢RIGHT(TRENN,10)

而且最好还是明确地使用 join

SELECT b.NR_LE, b.NR_VP_EXTERN, b.PN FROM 
(
SELECT DISTINCT NR_LE_1 FROM table 
WHERE lager = 'RA1' AND ID_KLIENT = 'IACTVK' AND ID_ARTIKEL <> 'VERSAND' AND MNG_FREI > 0 
AND NOT ((ORT ='STD' AND BEREICH ='WV') OR (ORT ='INV' AND BEREICH ='YV' AND PLATZ ='99'))
) a inner join 
(SELECT DISTINCT NR_LE, NR_VP_EXTERN, RIGHT(TRENN,10) AS PN FROM table WHERE NR_VP_EXTERN IS NOT NULL
) b on a.NR_LE_1 = b.NR_LE 
ORDER BY b.NR_LE, b.NR_VP_EXTERN

推荐阅读