字符串后删除所有内容

时间:2012-10-30 04:53:33

标签: sql replace

我有一个表格,其中包含我网站上销售商品的说明。

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

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

  

-Whip Up,蓬松巧克力巧克力口味;更轻松的享受巧克力的方式    - 减少45%的脂肪

< iframe src =“http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.oursite.com%2Findex.php%3Fmain_page%3Dproduct_info%26cPath%3D33_36%26products_id%3D106&布局=标准&安培; show_faces =真安培;宽度= 450安培;行动=像&安培;色彩方案=光&安培;高度= 80"   scrolling =“no”frameborder =“0”style =“border:none; overflow:hidden;   宽度:450像素;身高:80px;“allowTransparency =”true“>< / iframe>

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

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

我能想到的最好的是

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

但这似乎不起作用。

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

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

在其他网站上找到后,我也尝试了这个。同样的,但认为它可能让某人知道如何继续:

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

3 个答案:

答案 0 :(得分:2)

SELECT 
trim( -- trim removes spaces before and after given string
    left(
        'some text < iframe', 
        locate('< iframe', 'some text < iframe') - 1
    )
);

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

你也可以看一下这个帖子:

Remove HTML tags from record

但这是关于仅删除标记以及在标记之间保留<tag>文本</tag>的讨论。无论如何它都适合你,因为<iframe></iframe>之间没有任何内容。

答案 1 :(得分:1)

  1. REPLACE('<iframe%','<iframe%',' ')会给你'' - 它会搜索第一个参数以获得第二个参数并将其替换为第三个参数。
  2. LEFT(somestring, 0)会给你0个字符串

答案 2 :(得分:0)

试试这个:

select substr(your_raw_string, 0, instr(your_raw_string, '<iframe') -1)
from your_table
相关问题