SQL Server-无html格式和行间距的批量导出数据

SQL Server-无html格式和行间距的批量导出数据,sql,sql-server,Sql,Sql Server,我需要将一些数据库数据导出到文本文件中。我的查询如下所示: SELECT Category1, Category2, Category3 FROM dbo.tbl1 WHERE Category1 = 'JP-4' AND Category2> 4; Category1: JP-4 Category2: 4 Category3:<p>Neque porro quisquam est qui dolorem ipsum quia dolor</p> <p&

我需要将一些数据库数据导出到文本文件中。我的查询如下所示:

SELECT Category1, Category2, Category3 
FROM dbo.tbl1
WHERE Category1 = 'JP-4'
AND Category2> 4;
Category1: JP-4
Category2: 4
Category3:<p>Neque porro quisquam est qui dolorem ipsum quia dolor</p>  <p>amet, consectetur, adipisci velit</p>
Category4:<p>Neque porro quisquam est qui dolorem ipsum quia dolor</p>  
这可以很好地获取数据,但是表条目中有一些html格式,例如



等。因此,理想情况下,在将数据导出到文本文件时,我需要删除这些内容。我试着用一个简单的替换查询来完成它,但没有成功。 我还遇到行拆分问题,需要删除(\n\r)。 任何关于如何做到这一点的建议都将不胜感激

数据格式如下所示:

SELECT Category1, Category2, Category3 
FROM dbo.tbl1
WHERE Category1 = 'JP-4'
AND Category2> 4;
Category1: JP-4
Category2: 4
Category3:<p>Neque porro quisquam est qui dolorem ipsum quia dolor</p>  <p>amet, consectetur, adipisci velit</p>
Category4:<p>Neque porro quisquam est qui dolorem ipsum quia dolor</p>  
类别1:JP-4
类别2:4
第3类:不属于同一类,属于同一类

amet、Concertetur、adipisci velit

第4类:Neque porro quisquam est qui dolorem ipsum quia dolor

我用它工作:

SELECT REPLACE(REPLACE("Category3",'<p>',''),'</p>','') 
FROM dbo.tbl1
WHERE Category1= 'JP-4'
AND Category2> 4;
选择替换(替换(“类别3”、“”、”、“

”、”) 来自dbo.tbl1 其中类别1='JP-4' 和类别2>4;
但问题是,我总共有15列,我需要为每列的几个不同标签做这项工作,我认为必须有更好/更有效的方法来做。
我在互联网上找遍了,但找不到真正的解决办法

我创建了一个函数,用于在类似情况下去除非字母数字字符。完整代码为:

CREATE FUNCTION dbo.ufnGENStripNonAlphaNumChars (
    @inputString nvarchar(max)
)

RETURNS nvarchar(max)
AS
BEGIN

DECLARE @keepChars nvarchar(50) = '%[^a-z0-9 ]%' --a-z, 0-9, space

WHILE PatIndex(@keepChars, @inputString) > 0
    BEGIN
       set @inputString = STUFF(@inputString, PatIndex(@keepChars, @inputString), 1, '');
    END


RETURN @inputString;

END;
关键在于您使用patindex函数查找什么。我设置了@keepChars='%[^a-z0-9]',这意味着它会查找任何不是字母或数字字符的内容(胡萝卜-^)。您应该能够调整传递给patindex的条件,以获得所需的结果(请注意,patindex不使用正则表达式)

希望这能为你指明一个有用的方向

编辑:

在进一步回顾之后,这里有一种更接近于专门针对html代码的方法(另请参见):

DECLARE@Start INT
声明@End INT
声明@Length INT

设置@Start=CHARINDEX(“”,@inputString,CHARINDEX('谢谢,我会试一试。愚蠢的问题-我可以将该函数添加到SQL Server导出向导的源查询中吗?您可以在数据库中创建该函数,然后在查询中引用它,如:select dbo.ufnGENStripNonAlphaNumChars([您的_列])我设法让它与调整您的代码一起工作,谢谢!我现在唯一的问题是,例如,使用标记,它也会去掉所有的单个p。您知道我是否可以以某种方式声明标记作为一个整体吗?我已经更新了答案,使用charindex而不是patindex来更直接地针对html元素。另请参阅复制,请检查我已在帖子中尝试了该代码,但无法使其正常工作