s23user Ответов: 1

Запрос для получения данных, имеющих HTML-тег, из таблицы БД


У меня есть таблица со столбцом, в котором могут быть или не быть данные с html-тегами.
Мое требование состоит в том, чтобы импортировать эти данные в лист excel для целей отчета. Я написал функцию, которая возвращает данные, но делает это с помощью html-тегов.
Я хотел бы снять теги и вернуть только данные.
Например, если есть тег <p>/p > или< br/>, Я хотел бы иметь разрыв строки в ячейке excel или, по крайней мере, запятую для разделения данных.
и если есть тег изображения, я хотел бы отображать только ссылки на этот файл.

Таблица БД:
Примечания К Проекту
&ЛТ;п&ГТ;сигнализации испытана должен вернуться необходимого рейса&ЛТ;/п&ГТ;&ЛТ;п&ГТ;отсутствует видеорегистратор вернется, когда получил &ЛТ;/п&ГТ;
&ЛТ;БР&ГТ;&ЛТ;ИМГ класс="notesimage" СРЦ="https://myexample.com/myImageFolder/myImage.jpg" стиль="маржа: 5 пикселей;"&ГТ;




В Excel я хотел бы отобразить как :

Что я уже пробовал:

это моя функция:

ALTER FUNCTION [dbo].[ufnGetProjectNotes](@ProjectID int)  
RETURNS nvarchar(max)   
AS   

BEGIN  
    DECLARE @projectNotes nvarchar(max);  
    SELECT  @projectNotes =stuff( (SELECT ','+Notes 
                FROM [StoreDevelopment].[dbo].[ProjectNotes] p2
               WHERE p2.ProjectID = p1.ProjectID
               FOR XML PATH(''), TYPE).value('.', 'nvarchar(max)')
            ,1,1,'') 
       FROM [StoreDevelopment].[dbo].[ProjectNotes] p1
      GROUP BY ProjectID having projectid=@ProjectID;
   
    RETURN @projectNotes;  
END

Maciej Los

Excel умеет читать html-файлы...

s23user

В моем случае-нет. данные импортируются в том виде, в каком они находятся в базе данных.

s23user

Моя текущая функция объединяет заметки о проектах из всех строк для данного идентификатора проекта. Если бы каким-то образом я мог сбросить возвращаемые результаты во временную таблицу, где я могу использовать любую функцию Replace Substring и т. д., чтобы обрезать и заменить тег и вернуть массированный результат обратно в вызывающую функцию.
Но я новичок в Sql Server. Я не знаю, как это написать. Я ценю вашу помощь, и я тоже мог бы учиться.

1 Ответов

Рейтинг:
5

RDBurmon

немного изменено, чтобы включить оператор replace
он даст вам комментарий, который указан между этим HTML-тегом

ALTER FUNCTION [dbo].[ufnGetProjectNotes](@ProjectID int)  
RETURNS nvarchar(max)   
AS   
 
BEGIN  
    DECLARE @projectNotes nvarchar(max);  
    SELECT  @projectNotes =stuff( (SELECT ','+Notes 
                FROM [StoreDevelopment].[dbo].[ProjectNotes] p2
               WHERE p2.ProjectID = p1.ProjectID
               FOR XML PATH(''), TYPE).value('.', 'nvarchar(max)')
            ,1,1,'') 
       FROM [StoreDevelopment].[dbo].[ProjectNotes] p1
      GROUP BY ProjectID having projectid=@ProjectID;
   
    projectNotes = Replace(projectNotes,'</P><P>','')
    projectNotes = SUBSTR(projectNotes,3,INDEX(projectNotes,'</p')))
    RETURN @projectNotes;  
END


s23user

Спасибо за сообщение.