我有一个.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`;
答案 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)