我在数据库中有一个列,并且有这样的值
course_repeatfkfjkjfjkfer_10_topics_0_presentation_link
course_repeatfkfjfkfkfklfflkflkfs_1_presentation_link
course_repeatfkfjfkfkfklfflkflkfs_2_presentation_link
coursek_epeatfkfjfkfkfklfflkflkfs_10_presentation_link
course_hdhdhhdhdjhdrepeatfkfjfkfkfklfflkflkfs_21_presentation_link
等等。
我需要在 _presentation_link 之前选择0,1,2,10,21,但我在mysql中也需要这个
我在mysql中使用了substr,但这不起作用。任何的想法?
由于
答案 0 :(得分:1)
一种选择是使用SUBSTRING_INDEX()
和REPLACE()
的组合:
SELECT SUBSTRING_INDEX(REPLACE(col, '_presentation_link', ''), '_', -1)
FROM yourTable
以course_repeatfkfjkjfjkfer_10_topics_0_presentation_link
为例,在替换之后,这将成为:
course_repeatfkfjkjfjkfer_10_topics_0
对SUBSTRING_INDEX()
的调用会在最后一个下划线之后抓取显示的所有内容,这是您要捕获的数字。
在这里演示:
答案 1 :(得分:0)
您可以像这样使用substring_index
两次:
select substring_index(substring_index(col, '_', -3), '_', 1)
from t