【问题标题】:Remove everything after string删除字符串后的所有内容
【发布时间】:2012-10-19 10:18:17
【问题描述】:

我有一个表格,其中包含我网站上出售的商品的描述。

在我们无限的智慧中,当我们第一次启动该网站时,我们将 Facebook Like 按钮的代码粘贴到描述中,每个都略有不同,因为链接中包含产品信息。我们现在有大约 400 个项目,其中包含代码。

这是我正在处理的一个例子:

-搅打起来,巧克力口味的蓬松巧克力;以更轻松的方式享用巧克力
- 脂肪减少 45%


我想删除<iframe 以及它之后的所有内容。我一直在寻找使用 REPLACE 和/或 LEFT 的示例,但找不到我需要的东西,因为我不太精通 SQL 语言。

它将始终位于 products_description 字段的末尾,因此我无需担心在它之前保存任何内容。

我能想到的最好的是

SELECT LEFT(REPLACE('<iframe%','<iframe%',' '),0)

但这似乎不起作用。

感谢您为此提供的任何帮助,因为与编辑每个描述相比,我花费的时间要少得多。

更新:在尝试了许多建议的变体之后,仍然没有找到答案。它运行,但不对列进行任何编辑。

我也试过这个,在另一个网站上找到后。相同,但认为它可能会让某人知道如何进行:

select left(`products_description`,instr('<iframe',`products_description`)-1) FROM products_description

【问题讨论】:

    标签: sql replace


    【解决方案1】:
    1. REPLACE('&lt;iframe%','&lt;iframe%',' ') 只会给你 ' ' - 它会在第一个参数中搜索第二个参数并将其替换为第三个。
    2. LEFT(somestring, 0)会给你0个字符串

    【讨论】:

      【解决方案2】:
      SELECT 
      trim( -- trim removes spaces before and after given string
          left(
              'some text < iframe', 
              locate('< iframe', 'some text < iframe') - 1
          )
      );
      

      为了更好地理解,我没有删除 &lt;iframe 之间的空格。

      你也可以看看这个帖子:

      Remove HTML tags from record

      但这是关于仅删除标签以及在标签之间保留&lt;tag&gt;text&lt;/tag&gt; 的讨论。无论如何,它会为您服务,因为您在 &lt;iframe&gt;&lt;/iframe&gt; 之间一无所有。

      【讨论】:

      • 谢谢,必须把空间放在那里,否则我不会显示代码。 AFA '一些文本',我可以在那里使用通配符(%,对吗?)?所有的描述都是不同的,所以我不能指定会有什么。还是代码的“一些文本”部分?
      • This: 'some text
      • SELECT trim( left( 'products_description', locate('&lt;iframe', 'products_description') - 1 ) ); 这是我尝试过的,但没有得到任何结果/更改。
      • 1.您是否在代码中添加了“FROM 表”? 2.也许把&lt; iframe而不是&lt;iframe
      • 1.我在 phpMyAdmin 中,正在导航到有问题的表,然后从那里运行代码,还有必要吗?
      【解决方案3】:

      试试这个:

      select substr(your_raw_string, 0, instr(your_raw_string, '<iframe') -1)
      from your_table
      

      【讨论】:

      • 谢谢。我试过这个,和我在另一个网站上找到的类似的东西,张贴在我上面的编辑中,使用左。它运行良好,但没有显示任何变化。我不明白我做错了什么。
      • 你尝试过 substr() 吗?这只会返回子字符串
      • 是的,这是我使用的代码:select substr(products_description, 0, instr(products_description, '
      • 列名和表名都是products_description。当我运行它时,我没有收到错误消息,但没有进行任何更改。使用 phpMyAdmin
      • 试试:select substr(PD.products_description, 0, instr(PD.products_description, '&lt;iframe') -1) from products_description PD
      猜你喜欢
      • 2017-06-03
      • 2012-03-08
      • 1970-01-01
      • 1970-01-01
      • 2021-02-28
      • 1970-01-01
      • 2018-04-03
      • 2015-09-26
      • 1970-01-01
      相关资源
      最近更新 更多