Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 带有2个分隔符的子字符串索引_Mysql_Substring - Fatal编程技术网

Mysql 带有2个分隔符的子字符串索引

Mysql 带有2个分隔符的子字符串索引,mysql,substring,Mysql,Substring,我有两种不同类型的项目代码。它由两部分组成,[companycode]-[itemcode]。下面是一个例子: 答:0888-DIA172966616 B:0888-PMA516998-2200000M 我只想对它的[itemcode]部分进行子串,因此我使用 SUBSTRING_INDEX(ItemCode, '-', -1) 它适用于项目代码Adia17296616,但对于B,它只给出第二个“-”的值,所以它只是2200000M。如何获取B的完整项目代码?子字符串_INDEX()仅在需要前

我有两种不同类型的项目代码。它由两部分组成,
[companycode]-[itemcode]
。下面是一个例子:

答:
0888-DIA172966616
B:
0888-PMA516998-2200000M

我只想对它的
[itemcode]
部分进行子串,因此我使用

SUBSTRING_INDEX(ItemCode, '-', -1)
它适用于项目代码A
dia17296616
,但对于B,它只给出第二个“-”的值,所以它只是
2200000M
。如何获取B的完整项目代码?

子字符串_INDEX()
仅在需要前N个或最后N个分隔字符串时才有用,不能直接用于“除前N个以外的所有字符串”

不要使用
SUBSTRING\u INDEX()
为此,请使用
SUBSTR()
LOCATE()


LOCATE(ItemCode'-')
返回第一个
-
的位置,
SUBSTR()
然后返回其后的所有内容<代码>+1使其也跳过
-

如何获取B的完整项目代码?不清楚的。你需要
PMA516998-2200000M
还是
PMA516998-2200000M
?@Akina我需要
PMA516998-2200000M
不仅
PMA516998-2200000M
我仍然得到
0888-PMA516998-2200000M
这个查询虚拟机,你得到了它,但是在
LOCATE
中应该是
LOCATE('',,ItemCode)
。非常感谢,伙计。
SUBSTR(ItemCode, LOCATE('-', ItemCode)+1)