This morning I found that a column in my SQL Server 2016 database has been corrupted somehow.
I have about 900 rows with a variation of this odd looking string:
<p>PC Gaming is central part of youth culture these days.</p><p> Let's examine this photo.</p> <img src="data:image/tiff;base64,GHFFFIFRHR////雙節棍/////兩節///武術緣分風油/769P/++vb//vv3//77+P/軚垂直升降連鐳射洗衣乾衣腐蝕性氣墊毛筆//////如染色质免疫共沉淀芯片技术/武術緣分風油軚////////垂直升降連鐳射洗衣乾衣腐蝕性氣墊//////ZBRE/////RE//VWKYH//////////////////////
The web app that uses this crashes when it encounters a value like this.
So I am looking for a way to remove the string from my table.
The only pattern I see is that they all start with <img src="data:image/tiff;base64
and end with at least two slashes like... //
The amount of characters is variable ranging from 20 all the way up to 5000!
The table column is of type nvarchar(MAX)
.
The only way I know how to replace is something like this:
UPDATE myTable
SET myColumn = REPLACE(myColumn, '<img src="data:image/tiff;base64', '')
WHERE someColumn LIKE '%<img src="data:image/tiff;base64'
But that will only replace the <img src="data:image/tiff;base64
part of the string.
Is there another way to replace something like this?
Thanks!
Here is some sample data:
INSERT INTO myTable(myText) VALUES('<p>The efficiency we have at removing trash has made creating trash more acceptable.</p><img src="data:image/tiff;base64,GHFFFIFRHR////雙節棍/////軚垂直升降連鐳///武術緣分風油/769P/++vb//vv3//77+P/軚垂直升降連鐳射洗衣乾衣腐蝕性氣墊毛筆//////如染色质免疫共沉淀芯片技术/武術緣分風油軚////////垂直升降連鐳射洗衣乾衣腐蝕性氣墊//////ZBRE/////RE//VWKYH//////////');
INSERT INTO myTable(myText) VALUES('<p>Edith could decide if she should paint her teeth or brush her nails.</p><img src="data:image/tiff;base64,GGHRTHTRH////鐳射洗衣/////兩節///武術緣分風油/769P/++vb//vv3//77+P/軚垂直升降連鐳射洗衣乾衣腐蝕性氣墊毛筆//////如染色质免疫共沉淀芯片技术/武術緣分風油軚////////垂直升降連鐳射洗衣乾衣腐蝕性氣墊//////FGSS/////RE//GNDRG////');
INSERT INTO myTable(myText) VALUES('<p>Before he moved to the inner city, he had always believed that security complexes were psychological.</p><img src="data:image/tiff;base64,VNDFGSTGV////雙節棍/////軚垂直升降連鐳///武術緣分風油/769P/++vb//vv3//77+P/軚垂直升降連鐳射洗衣乾衣腐蝕性氣墊毛筆//////如染色质免疫共沉淀芯片技术/武術緣分風油軚////////垂直升降連鐳射洗衣乾衣腐蝕性氣墊//////ZBRE/////RE//JKSEFSE//////////////');
INSERT INTO myTable(myText) VALUES('<p>The rain pelted the windshield as the darkness engulfed us.</p><img src="data:image/tiff;base64,HJHNDFGFGX////鐳射洗衣/////兩節///武術緣分風油/769P/++vb//vv3//77+P/軚垂直升降連鐳射洗衣乾衣腐蝕性氣墊毛筆//////如染色质免疫共沉淀芯片技术/武術緣分風油軚////////垂直升降連鐳射洗衣乾衣腐蝕性氣墊//////JKYR/////RE//RTYGHTR//////////////////////');
INSERT INTO myTable(myText) VALUES('<p>The ants enjoyed the barbecue more than the family.</p><img src="data:image/tiff;base64,GDFGSFEFG////雙節棍/////軚垂直升降連鐳///武術緣分風油/769P/++vb//vv3//77+P/軚垂直升降連鐳射洗衣乾衣腐蝕性氣墊毛筆//////如染色质免疫共沉淀芯片技术/武術緣分風油軚////////垂直升降連鐳射洗衣乾衣腐蝕性氣墊//////XCWED/////RE//SDFRHUK//////////');
INSERT INTO myTable(myText) VALUES('<p>That was how he came to win $1 million.</p><img src="data:image/tiff;base64,ERQWDWJMJKL////鐳射洗衣/////兩節///武術緣分風油/769P/++vb//vv3//77+P/軚垂直升降連鐳射洗衣乾衣腐蝕性氣墊毛筆//////如染色质免疫共沉淀芯片技术/武術緣分風油軚////////垂直升降連鐳射洗衣乾衣腐蝕性氣墊//////HTHS/////RE//SDFFGRR///////');
INSERT INTO myTable(myText) VALUES('<p>The Guinea fowl flies through the air with all the grace of a turtle.</p><img src="data:image/tiff;base64,HHJYJHCBF////雙節棍/////兩節///武術緣分風油/769P/++vb//vv3//77+P/軚垂直升降連鐳射洗衣乾衣腐蝕性氣墊毛筆//////如染色质免疫共沉淀芯片技术/武術緣分風油軚////////垂直升降連鐳射洗衣乾衣腐蝕性氣墊//////OLIO/////RE//GEWFSDF/////////////');
INSERT INTO myTable(myText) VALUES('<p>She found his complete dullness interesting.</p><img src="data:image/tiff;base64,FGHGBEDRGBG////雙節棍/////軚垂直升降連鐳///武術緣分風油/769P/++vb//vv3//77+P/軚垂直升降連鐳射洗衣乾衣腐蝕性氣墊毛筆//////如染色质免疫共沉淀芯片技术/武術緣分風油軚////////垂直升降連鐳射洗衣乾衣腐蝕性氣墊//////SFAW/////RE//WERHHEER//////////////');
INSERT INTO myTable(myText) VALUES('<p>His son quipped that power bars were nothing more than adult candy bars.</p><img src="data:image/tiff;base64,GNFGJHRYN////鐳射洗衣/////兩節///武術緣分風油/769P/++vb//vv3//77+P/軚垂直升降連鐳射洗衣乾衣腐蝕性氣墊毛筆//////如染色质免疫共沉淀芯片技术/武術緣分風油軚////////垂直升降連鐳射洗衣乾衣腐蝕性氣墊//////DSFQ/////RE//DFWERH///////////////////');
INSERT INTO myTable(myText) VALUES('<p>The beauty of the sunset was obscured by the industrial cranes.</p><img src="data:image/tiff;base64,BNFHNN BN////雙節棍/////軚垂直升降連鐳///武術緣分風油/769P/++vb//vv3//77+P/軚垂直升降連鐳射洗衣乾衣腐蝕性氣墊毛筆//////如染色质免疫共沉淀芯片技术/武術緣分風油軚////////垂直升降連鐳射洗衣乾衣腐蝕性氣墊//////REQW/////RE//FDSDFSDF////////////');
For row 1, I need to delete or replace the string, "<img src="data:image/tiff;base64,GHFFFIFRHR////雙節棍/////軚垂直升降連鐳///武術緣分風油/769P/++vb//vv3//77+P/軚垂直升降連鐳射洗衣乾衣腐蝕性氣墊毛筆//////如染色质免疫共沉淀芯片技术/武術緣分風油軚////////垂直升降連鐳射洗衣乾衣腐蝕性氣墊//////ZBRE/////RE//VWKYH//////////" with nothing For row 2, I need to delete or replace the string, "<img src="data:image/tiff;base64,GGHRTHTRH////鐳射洗衣/////兩節///武術緣分風油/769P/++vb//vv3//77+P/軚垂直升降連鐳射洗衣乾衣腐蝕性氣墊毛筆//////如染色质免疫共沉淀芯片技术/武術緣分風油軚////////垂直升降連鐳射洗衣乾衣腐蝕性氣墊//////FGSS/////RE//GNDRG////" with nothing For row 3, I need to delete or replace the string, "<img src="data:image/tiff;base64,VNDFGSTGV////雙節棍/////軚垂直升降連鐳///武術緣分風油/769P/++vb//vv3//77+P/軚垂直升降連鐳射洗衣乾衣腐蝕性氣墊毛筆//////如染色质免疫共沉淀芯片技术/武術緣分風油軚////////垂直升降連鐳射洗衣乾衣腐蝕性氣墊//////ZBRE/////RE//JKSEFSE//////////////" with nothing For row 4, I need to delete or replace the string, "<img src="data:image/tiff;base64,HJHNDFGFGX////鐳射洗衣/////兩節///武術緣分風油/769P/++vb//vv3//77+P/軚垂直升降連鐳射洗衣乾衣腐蝕性氣墊毛筆//////如染色质免疫共沉淀芯片技术/武術緣分風油軚////////垂直升降連鐳射洗衣乾衣腐蝕性氣墊//////JKYR/////RE//RTYGHTR//////////////////////" with nothing For row 5, I need to delete or replace the string, "<img src="data:image/tiff;base64,GDFGSFEFG////雙節棍/////軚垂直升降連鐳///武術緣分風油/769P/++vb//vv3//77+P/軚垂直升降連鐳射洗衣乾衣腐蝕性氣墊毛筆//////如染色质免疫共沉淀芯片技术/武術緣分風油軚////////垂直升降連鐳射洗衣乾衣腐蝕性氣墊//////XCWED/////RE//SDFRHUK//////////" with nothing For row 6, I need to delete or replace the string, "<img src="data:image/tiff;base64,ERQWDWJMJKL////鐳射洗衣/////兩節///武術緣分風油/769P/++vb//vv3//77+P/軚垂直升降連鐳射洗衣乾衣腐蝕性氣墊毛筆//////如染色质免疫共沉淀芯片技术/武術緣分風油軚////////垂直升降連鐳射洗衣乾衣腐蝕性氣墊//////HTHS/////RE//SDFFGRR///////" with nothing For row 7, I need to delete or replace the string, "<img src="data:image/tiff;base64,HHJYJHCBF////雙節棍/////兩節///武術緣分風油/769P/++vb//vv3//77+P/軚垂直升降連鐳射洗衣乾衣腐蝕性氣墊毛筆//////如染色质免疫共沉淀芯片技术/武術緣分風油軚////////垂直升降連鐳射洗衣乾衣腐蝕性氣墊//////OLIO/////RE//GEWFSDF/////////////" with nothing For row 8, I need to delete or replace the string, "<img src="data:image/tiff;base64,FGHGBEDRGBG////雙節棍/////軚垂直升降連鐳///武術緣分風油/769P/++vb//vv3//77+P/軚垂直升降連鐳射洗衣乾衣腐蝕性氣墊毛筆//////如染色质免疫共沉淀芯片技术/武術緣分風油軚////////垂直升降連鐳射洗衣乾衣腐蝕性氣墊//////SFAW/////RE//WERHHEER//////////////" with nothing For row 9, I need to delete or replace the string, "<img src="data:image/tiff;base64,GNFGJHRYN////鐳射洗衣/////兩節///武術緣分風油/769P/++vb//vv3//77+P/軚垂直升降連鐳射洗衣乾衣腐蝕性氣墊毛筆//////如染色质免疫共沉淀芯片技术/武術緣分風油軚////////垂直升降連鐳射洗衣乾衣腐蝕性氣墊//////DSFQ/////RE//DFWERH///////////////////" with nothing For row 10, I need to delete or replace the string, "<img src="data:image/tiff;base64,BNFHNN BN////雙節棍/////軚垂直升降連鐳///武術緣分風油/769P/++vb//vv3//77+P/軚垂直升降連鐳射洗衣乾衣腐蝕性氣墊毛筆//////如染色质免疫共沉淀芯片技术/武術緣分風油軚////////垂直升降連鐳射洗衣乾衣腐蝕性氣墊//////REQW/////RE//FDSDFSDF////////////" with nothing
Please try the following solution.
I am assuming that not needed part is always at the end of the column value.
If everything is okay, it is easy to convert it to an UPDATE
statement.
SQL
-- DDL and sample data population, start
DECLARE @tbl TABLE (ID INT IDENTITY PRIMARY KEY, htmldata NVARCHAR(MAX));
INSERT INTO @tbl (htmldata) VALUES
(N'<p>PC Gaming is central part of youth culture these days.</p><p>Let''s examine this photo.</p><img src="data:image/tiff;base64,GHFFFIFRHR////雙節棍////"/>'),
(N'<p>Edith could decide if she should paint her teeth or brush her nails.</p><img src="data:image/tiff;base64');
-- DDL and sample data population, end
DECLARE @searchFor NVARCHAR(40) = N'<img src="data:image/tiff;base64';
SELECT *
, LEFT(htmldata, CHARINDEX(@searchFor, htmldata) - 1)
FROM @tbl;