你能帮我解决这个问题吗? 我有一个问题,使用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,如果在右侧索引中找不到它。
答案 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;
这将返回一个空字符串(''
),而不是0
或NULL
。如果你想要一个数字,那么我只需在字段上+ 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;