更新mysql表的特定列

时间:2014-06-23 16:49:09

标签: mysql replace sql-update trim

我在mysql中有一个非常大的表,我需要更改与该列相关的所有记录。

记录是这样的:

/name/nm0000209/?ref_=ttfc_fc_cl_t1, 
/name/nm0000151/?ref_=ttfc_fc_cl_t2, 
...,  
/name/nm0104594/?ref_=ttfc_fc_cl_t10

我想要的是只保留中间的字符串nm0000209nm0000151,....我知道如何从单词的右侧或左侧删除特定字符{ {1}}或Trim,..,但我的问题是,在这种情况下,字符串第三部分中的字符数不相等(正如您所看到的那样,当它达到10时,我必须从最后删除21个字符而不是20个字符,因为这个表包含很多记录,我不知道该怎么做。

我真的很感激,如果有人能帮助我,

感谢

2 个答案:

答案 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函数。它会让你在最后一次削减之后得到任何东西。或者倒数第二次。

enter image description here

针对您的具体情况

select 
  SUBSTRING_INDEX(SUBSTRING_INDEX(thefield,'/',-2 ),'/', 1) 
from supertext

会产生所需的结果

编辑:用于更新目的

 UPDATE thetable 
 SET thefield=SUBSTRING_INDEX(SUBSTRING_INDEX(thefield,'/',-2 ),'/', 1)