Select 在 MySQL 中连接子字符串并替换
Select Concat Substring and Replace in MySQL
我有一个 .sql 文件,需要删除所有多余的字符,只留下文本。所以“”里面的任何东西。列中 TEXT 字段的示例是
a:1:{i:0;s:9:"test word here";}
a:1:{i:0;s:11:"test words here too";}
所以我想要的话。在这里测试单词。也在这里测试单词。全部留在文本字段中。
我最初喜欢这样的东西。
UPDATE `questions`
SET answer = REPLACE(REPLACE(REPLACE(REPLACE(answer, 'a:1', ''), 's:4', ''), 'i:0', ''), ',', '')
但很快意识到 s:4 有 s:5、s:16 等。所以那是行不通的。我的下一个尝试是使用 concat 并只删除一定数量的以 a: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`;
你可以这样做:
select substr(with_end, 1, locate('"', with_end )-1) as 'str'
from (
select substr(answer, locate('"', answer )+1) 'with_end'
from questions
) as q
substring_index()
怎么样?
UPDATE `questions`
SET answer = substring_index(substring_index(answer, '"', 2), '"', -1)
我有一个 .sql 文件,需要删除所有多余的字符,只留下文本。所以“”里面的任何东西。列中 TEXT 字段的示例是
a:1:{i:0;s:9:"test word here";}
a:1:{i:0;s:11:"test words here too";}
所以我想要的话。在这里测试单词。也在这里测试单词。全部留在文本字段中。
我最初喜欢这样的东西。
UPDATE `questions`
SET answer = REPLACE(REPLACE(REPLACE(REPLACE(answer, 'a:1', ''), 's:4', ''), 'i:0', ''), ',', '')
但很快意识到 s:4 有 s:5、s:16 等。所以那是行不通的。我的下一个尝试是使用 concat 并只删除一定数量的以 a: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`;
你可以这样做:
select substr(with_end, 1, locate('"', with_end )-1) as 'str'
from (
select substr(answer, locate('"', answer )+1) 'with_end'
from questions
) as q
substring_index()
怎么样?
UPDATE `questions`
SET answer = substring_index(substring_index(answer, '"', 2), '"', -1)