我在mysql中有一个非常大的表,我需要更改与该列相关的所有记录。
记录是这样的:
/name/nm0000209/?ref_=ttfc_fc_cl_t1,
/name/nm0000151/?ref_=ttfc_fc_cl_t2,
...,
/name/nm0104594/?ref_=ttfc_fc_cl_t10
我想要的是只保留中间的字符串nm0000209
,nm0000151
,....我知道如何从单词的右侧或左侧删除特定字符{ {1}}或Trim,..,但我的问题是,在这种情况下,字符串第三部分中的字符数不相等(正如您所看到的那样,当它达到10时,我必须从最后删除21个字符而不是20个字符,因为这个表包含很多记录,我不知道该怎么做。
我真的很感激,如果有人能帮助我,
感谢
答案 0 :(得分:2)
我想只保留中间的字符串,即nm0000209,nm0000151 ...
您可以使用列上的'SUBSTRING_INDEX'
裁剪部分列值。
以下示例假定所述列将以'name/'
作为起始模式。
示例:
update table_name
set column_name = substring_index(
substring_index( column_name, 'name/', -1 )
, '/', 1 );
可以使用相同的值进行更新。
演示 @ MySQL Fiddle
答案 1 :(得分:1)
一种方法是使用MYSQL的SUBSTRING_INDEX函数。它会让你在最后一次削减之后得到任何东西。或者倒数第二次。
针对您的具体情况
select
SUBSTRING_INDEX(SUBSTRING_INDEX(thefield,'/',-2 ),'/', 1)
from supertext
会产生所需的结果
编辑:用于更新目的
UPDATE thetable
SET thefield=SUBSTRING_INDEX(SUBSTRING_INDEX(thefield,'/',-2 ),'/', 1)