mysql substring重复相同的值

时间:2017-11-28 17:06:18

标签: mysql sql substring mysql-workbench

你能帮我解决这个问题吗? 我有一个问题,使用substring_index来分割列中的值,我对前两个值1/3不感兴趣。

表名= cc

路径(下面的示例值)

1/3/183

 `
select 
cc.path,
substring_index(substring_index( cc.path, '/',3),'/',-1)
,

substring_index(substring_index( cc.path, '/',4),'/',-1)
,

substring_index(substring_index( cc.path, '/',5),'/',-1)
from cc
`

给出输出

  

1/3/183 183 183 183   。我不希望183重复我更喜欢空白或0,如果在右侧索引中找不到它。

1 个答案:

答案 0 :(得分:1)

您可以使用case或。 。 。或许更简单,只需在列中添加一堆斜杠:

select cc.path,
       substring_index(substring_index(concat(cc.path, '/////'), '/', 3), '/', -1),   
       substring_index(substring_index(concat(cc.path, '/////'), '/', 4), '/', -1),
       substring_index(substring_index(concat(cc.path, '/////'), '/', 5), '/', -1)
from cc;

这将返回一个空字符串(''),而不是0NULL。如果你想要一个数字,那么我只需在字段上+ 0将值转换为数字。

或者,如果你想要0作为字符串:

select cc.path,
       substring_index(substring_index(concat(cc.path, '/0/0/0/0/0'), '/', 3), '/', -1),   
       substring_index(substring_index(concat(cc.path, '/0/0/0/0/0'), '/', 4), '/', -1),
       substring_index(substring_index(concat(cc.path, '/0/0/0/0/0'), '/', 5), '/', -1)
from cc;