从数据库中删除样式(SQL Server)
我正在处理旧的数据库表,其中有附加CSS的值 例如:从数据库中删除样式(SQL Server),sql,sql-server,Sql,Sql Server,我正在处理旧的数据库表,其中有附加CSS的值 例如: <font size="25">Select your gender?</font> <font size="25">Select your country?</font> 除了一次移除一个样式外,还有什么方法可以一次移除所有样式 我想删除并继续选择您的性别 提前谢谢你 charindex、substring和left的组合会有所帮助 问题在于,您必须确保每行所需的数据都符合以下格式: xx
<font size="25">Select your gender?</font>
<font size="25">Select your country?</font>
除了一次移除一个样式外,还有什么方法可以一次移除所有样式
我想删除并继续选择您的性别
提前谢谢你 charindex、substring和left的组合会有所帮助 问题在于,您必须确保每行所需的数据都符合以下格式:
xxxxx>Data1Data2借助辅助函数 范例 如果感兴趣的话,函数
据我所知,这些是一些列值,对吗?如果是,则可以在条件中使用更新表\u NAME SET columnName=null。是否要删除和?继续选择你的性别?@jarlh是的,这就是我想要的。谢谢你,这一个很有用!谢谢你的回答,但是zip的回答解决了我的问题。@Peter你的电话,但这将处理多个带或不带嵌套标签的记录。Peter,值得关注的是@John的解决方案,因为它解决了我在我的报告中提到的一个问题answer@JohnCappelletti我一直在寻找一个快速的解决方案,但您提供的解决方案值得学习,这将在未来对我有所帮助。感谢you@Peter我创建这个函数是因为我厌倦了提取字符串left、right、patindex、charindex等等。。。所以我修改了split函数以接受两个不相似的分隔符。我发现它有很多用途。希望有帮助:
declare @string as varchar(1000)
declare @NoLeft as varchar(1000)
declare @NoRight as varchar(1000)
set @string = '1.<font size="25">Select your gender?</font>';
select @string
SELECT @NoLeft = substring(@string, CHARINDEX( '>', @string) + 1 , len(@string)-CHARINDEX( '>', @string))
select @NoLeft
SELECT @NoRight = left(@NoLeft, CHARINDEX( '<', @NoLeft) - 1)
select @NoRight
select left(substring(ColumnName, CHARINDEX( '>', ColumnName) + 1 , len(ColumnName)-CHARINDEX( '>', ColumnName)), CHARINDEX( '<', substring(ColumnName, CHARINDEX( '>', ColumnName) + 1 , len(ColumnName)-CHARINDEX( '>', ColumnName))) - 1)
From TableName
Declare @YourTable table (SomeCol varchar(max) )
Insert Into @YourTable values
('1.<font size="25">Select your <b>gender</b>?</font>') -- Notice nested tags <b> ..</b>
,('2.<font size="25">Select your <span style="color:blue;">country</span>?</font>')
Select B.*
From @YourTable A
Cross Apply (
Select NewStr = Stuff((Select '' +RetVal
From [dbo].[tvf-Str-Extract](SomeCol,'>','<')
Order By RetSeq
For XML Path ('')),1,0,'')
) B
NewStr
1.Select your gender?
2.Select your country?
CREATE FUNCTION [dbo].[tvf-Str-Extract] (@String varchar(max),@Delim1 varchar(100),@Delim2 varchar(100))
Returns Table
As
Return (
Select RetSeq = row_number() over (order by RetSeq)
,RetVal = left(RetVal,charindex(@Delim2,RetVal)-1)
From (
Select RetSeq = row_number() over (order by 1/0)
,RetVal = ltrim(rtrim(B.i.value('(./text())[1]', 'varchar(max)')))
From ( values (convert(xml,'<x>' + replace((Select replace(@String,@Delim1,'§§Split§§') as [*] For XML Path('')),'§§Split§§','</x><x>')+'</x>').query('.'))) as A(XMLData)
Cross Apply XMLData.nodes('x') AS B(i)
) C1
Where charindex(@Delim2,RetVal)>1
)
/*
Declare @String varchar(max) = 'Dear [[FirstName]] [[LastName]], ...'
Select * From [dbo].[tvf-Str-Extract] (@String,'[[',']]')
*/