Solved

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

Posted on 2008-10-05
7
693 Views
Last Modified: 2013-11-15
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
Comment
Question by:Lawrence Barnes
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 2
7 Comments
 
LVL 60

Assisted Solution

by:Kevin Cross
Kevin Cross earned 300 total points
ID: 22645060
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
 
LVL 60

Accepted Solution

by:
Kevin Cross earned 300 total points
ID: 22645072
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
 
LVL 42

Assisted Solution

by:dqmq
dqmq earned 200 total points
ID: 22645129
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
Online Training Solution

Drastically shorten your training time with WalkMe's advanced online training solution that Guides your trainees to action. Forget about retraining and skyrocket knowledge retention rates.

 
LVL 60

Expert Comment

by:Kevin Cross
ID: 22645154
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
 
LVL 60

Expert Comment

by:Kevin Cross
ID: 22645158
0
 
LVL 5

Author Comment

by:Lawrence Barnes
ID: 22645198
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
 
LVL 5

Author Comment

by:Lawrence Barnes
ID: 22647078
I am just returning home (late this evening) and will get to back this anon.  
0

Featured Post

[Live Webinar] The Cloud Skills Gap

As Cloud technologies come of age, business leaders grapple with the impact it has on their team's skills and the gap associated with the use of a cloud platform.

Join experts from 451 Research and Concerto Cloud Services on July 27th where we will examine fact and fiction.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This article shows the steps required to install WordPress on Azure. Web Apps, Mobile Apps, API Apps, or Functions, in Azure all these run in an App Service plan. WordPress is no exception and requires an App Service Plan and Database to install
Lotus Notes has been used since a very long time as an e-mail client and is very popular because of it's unmatched security. In this article we are going to learn about  RRV Bucket corruption and understand various methods to Fix "RRV Bucket Corrupt…
Video by: Steve
Using examples as well as descriptions, step through each of the common simple join types, explaining differences in syntax, differences in expected outputs and showing how the queries run along with the actual outputs based upon a simple set of dem…
This is a high-level webinar that covers the history of enterprise open source database use. It addresses both the advantages companies see in using open source database technologies, as well as the fears and reservations they might have. In this…

623 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question