在SQL中拆分表数据并替换为结果

时间:2011-01-31 07:29:41

标签: sql string sql-server-2008 split substring

我需要根据拆分参数从每个表中删除一堆不需要的数据。

我的SQL表存储了一堆用于缓存的HTML,数据已经在SQL中并且它正在变得非常大,所以现在我想根据字符串拆分每个表中不使用的一些数据并使用新结果更新表格。

cacheHTML表正在保存这样的数据

<html>
... (a bunch of data I don't need)
<first div>
... (the data I do want to save)
</div>
... (data I don't care about also)
</html>

我只想知道第一个div中的内容是什么,并删除所有html到那一点。

有什么简单的方法吗?我需要对5k行的缓存数据执行此操作...

我需要一个函数或方法来告诉我string1到string2之间的所有内容然后用结果替换表。任何帮助将不胜感激,谢谢!

1 个答案:

答案 0 :(得分:2)

你可以这样做。只有在你总是需要html字符串中第一个div内的文本时才会起作用。我假设SQL Server是数据库系统,但很可能很容易将其翻译成其他人。

示例html字符串:

<html>
<head>
    <title>Stuff i dont need</title>
</head>
<body>
    <h1>Stuff i dont need</title>
    <p>I dont need any of this data</title>
    <div>This is the data i need to save!</div>
    <h3>Dont need this</h3>
    <div>Wont need this either!<div>
    <h3>Bye</h3>
</body>

执行更新的SQL:

UPDATE cacheHTML
SET htmlText = REPLACE(SUBSTRING(htmlText, CHARINDEX('<div>', htmlText, 0), CHARINDEX('</div>', htmlText, 0) - CHARINDEX('<div>', htmlText, 0)), '<div>', '')