Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从数据库中删除样式(SQL Server)_Sql_Sql Server - Fatal编程技术网

从数据库中删除样式(SQL Server)

从数据库中删除样式(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

我正在处理旧的数据库表,其中有附加CSS的值

例如:

<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,'[[',']]')
*/