【问题标题】:Select Concat Substring and Replace in MySQL在 MySQL 中选择 Concat 子字符串并替换
【发布时间】:2015-08-29 15:59:37
【问题描述】:

我有一个 .sql 文件,需要删除所有多余的字符,只剩下文本。所以“”里面的任何东西。列中 TEXT 字段的示例是

a:1:{i:0;s:9:"这里是测试词";}

a:1:{i:0;s:11:"这里也是测试词";}

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

我最初选择了这样的东西。

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

但很快意识到 s:4 有 s:5、s:16 等。所以这行不通。我的下一个尝试是使用 concat 并删除一定数量的以 a:1 开头的字符。我能够做一个有效的选择。但无法让 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`;

【问题讨论】:

    标签: mysql string replace concat


    【解决方案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
    

    【讨论】:

    • 天哪!棒极了!。但是现在您将如何进行替换以使其永久化?还是您建议设置和更新问题?
    【解决方案2】:

    substring_index()怎么样?

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

    【讨论】:

    • 有趣。我从未见过 substring_index。这太妙了。谢谢!
    猜你喜欢
    • 2014-01-22
    • 1970-01-01
    • 2013-01-30
    • 2014-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-01
    • 2012-08-11
    相关资源
    最近更新 更多