在MySQL中选择Concat Substring和Replace

时间:2015-06-13 20:55:24

标签: mysql string replace concat

我有一个.sql文件,需要删除所有额外的字符,只剩下文本。所以#34; &#34 ;.列中TEXT字段的一个示例是

a:1:{i:0; s:9:"测试字在这里&#34 ;;}

a:1:{i:0; s:11:"此处测试单词&#34 ;;}

所以我想要的话。测试一下这里。并在这里测试单词。全部留在文本字段中。

我原来是这样的。

  UPDATE `questions`
  SET answer = REPLACE(REPLACE(REPLACE(REPLACE(answer, 'a:1', ''), 's:4', ''), 'i:0', ''), ',', '')

然后很快意识到s:4有s:5,s:16等等所以那不会起作用。我的下一次尝试是使用concat并删除以:1开头的一定数量的字符。我能够做一个有效的SELECT。但是无法让REPLACE工作。下面你可以看到工作的SELECT。

SELECT CONCAT('tt',
          SUBSTRING(`answer`, -LOCATE('a:1', `answer`)+15)
   ) from `questions`;

这是我尝试使用REPLACE来处理它。但是我被卡住了。 我愿意接受任何建议,以防我在这里完全走错方向。

SELECT CONCAT(REPLACE('tt',
          SUBSTRING(`answer`, -LOCATE('a:1', `answer`)+15))
   ) from `questions`;

2 个答案:

答案 0 :(得分:1)

你可以这样做:

select substr(with_end, 1, locate('"', with_end )-1) as 'str'
from (
  select substr(answer, locate('"', answer )+1) 'with_end'
  from questions
) as q

答案 1 :(得分:1)

substring_index()怎么样?

UPDATE `questions`
    SET answer = substring_index(substring_index(answer, '"', 2), '"', -1)