• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 697
  • Last Modified:

SQL 2000 Replace - How to find/repllace multiple values using a table

I'm using SQL 2000.  I have a text field (ResumeRaw) in a table where resume data is posted and another field (ResumeClean) where I want the adjusted resume data to appear.  Some of the resume data has html tags which must be removed.  I have another table, with an ID field, containing the specific tags (BadTags) that I want removed.  To use the replace function to find each of the tags I want removed, I'm using the loop below.  (I know it's something simple, but it escapes me.)  The code below runs, the rows are adjusted, and values are placed in the ResumeClean field, but the html tags are not stripped out.  What am I missing?
DECLARE @TagMin INT
DECLARE @TagMax INT
DECLARE @TagCounter INT
DECLARE @CurrentTag VARCHAR(100)
SET @TagMin = (SELECT MIN([TagID]) FROM [TagsOK])
SET @TagMax = (SELECT MAX([TagID]) FROM [TagsOK])
SET @TagCounter = @TagMin
 
WHILE @TagCounter <= @TagMax
	BEGIN
SET @CurrentTag = (SELECT [BadTag] FROM [Tags] WHERE [TagID] = @TagCounter)
 
UPDATE [ResumeData]
SET [ResumeClean] = REPLACE([ResumeRaw],@CurrentTag,'')
SET @TagCounter = @TagCounter + 1
END

Open in new window

0
Lawrence Barnes
Asked:
Lawrence Barnes
  • 4
  • 2
3 Solutions
 
Kevin CrossChief Technology OfficerCommented:
Firstly, I would change this:
SET @CurrentTag = (SELECT [BadTag] FROM [Tags] WHERE [TagID] = @TagCounter)

To:
SELECT @CurrentTag = [BadTag] FROM [Tags] WHERE [TagID] = @TagCounter

Then make sure that the [BadTag] value returns the tagname correctly and then I would account for end tags as well.

REPLACE(REPLACE([ResumeRaw], '<' + @CurrentTag + '>', ''), '</' + @CurrentTag + '>', '')

One thing that you will have to check for in your data as well is that tags appear as just <tagname>.  If they appear as <tagname > OR <tagname attribute="value" attribute2="value2"> then your match will not work and thus you get tag still in resulting text.

Hope that helps.

Regards,
kevin
0
 
Kevin CrossChief Technology OfficerCommented:
This question was for stripping all HTML tags, but you can use the ideas in the stored procedure/functions shown to get an idea of what you may have to do if the parsing gets a little more complicated because of the factors I stated above.

http:Q_23755659.html
0
 
dqmqCommented:
Possibly, some of the problem is that you use the [TagsOK] table to establish the upper limit of your loop, but then you loop thru the [Tags] table.

Also, that loop is a sloppy way to code because it depends, unnecessarily on sequential ID's in the [Tags] table.  This is one case where a cursor would simplify your coding signficantly.



 

 
DECLARE @CurrentTag VARCHAR(100)
DECLARE BadTags CURSOR FOR SELECT [BadTag] FROM [Tags]
 
OPEN BadTags
FETCH NEXT FROM BadTags INTO @CurrentTag
WHILE @@FETCH_STATUS = 0
  BEGIN
  UPDATE [ResumeData]
    SET [ResumeClean] = REPLACE([ResumeRaw],@CurrentTag,'')
  FETCH NEXT FROM BadTags INTO @CurrentTag
  END
CLOSE BadTags
DEALLOCATE BadTags

Open in new window

0
The new generation of project management tools

With monday.com’s project management tool, you can see what everyone on your team is working in a single glance. Its intuitive dashboards are customizable, so you can create systems that work for you.

 
Kevin CrossChief Technology OfficerCommented:
Good point, dgmg.

<off-topic>Dgmg, since I know you are one of the Access officianados, you may want to look at helping this user http:Q_23788587.html.</off-topic>
0
 
Kevin CrossChief Technology OfficerCommented:
0
 
Lawrence BarnesAuthor Commented:
Wow, thank you for the quick responses.  I'll start trying the different approaches.  I'm new, so a bit slow...it will be today though.  There's a similar, but more elaboroate question posted as well... if you want to expand on a similar topic.

dgmg: I'll check the table references but I think its a typo.  After I copied/pasted the code I simplified the table/field names.  Thank you for your loop example!  This was my very first loop and I'm glad to upgrade.
0
 
Lawrence BarnesAuthor Commented:
I am just returning home (late this evening) and will get to back this anon.  
0

Featured Post

The new generation of project management tools

With monday.com’s project management tool, you can see what everyone on your team is working in a single glance. Its intuitive dashboards are customizable, so you can create systems that work for you.

  • 4
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now