2016-08-08 26 views
-4

Ich habe eine CSV-Datei, die im Nur-Text-Format enthält. Ich muss das Textfeld von einem Text in HTML-Code konvertieren.SQL Server Funktion, die einen Text im HTML-Format zurückgibt

Zum Beispiel:

Klartext:

Head 

Line2 
Line3 
Line4 

Umbau:

<p>Head</p> 

<p>Line2<br /> 
Line3<br /> 
Line4</p> 

Kann eine SQL Server-Funktion kann dies tun? Ich sah bereits ein Online-Tool http://www.textfixer.com/html/convert-text-html.php, die ähnliche Funktion ausführen können, aber ich muss mindestens 1300 Reihen von Lebenslauf, dass innerhalb einer CSV-Datei konvertieren.

Vielen Dank im Voraus!

+0

Ja einer SQL-Funktion könnte möglicherweise das tun. Wenn Sie mehr Details wünschen, müssen Sie uns zuerst etwas zur Verfügung stellen, damit wir wissen, was Sie wirklich versuchen. –

+0

Warum unternehmen Sie keine Mühe, eine gespeicherte Prozedur zu schreiben, um das zu tun, was Sie wollen? – Missy

+0

Dies kann relativ einfach mit row_number() und einer Cte oder einer verschachtelten Abfrage durchgeführt werden. Meine Frage ist, wie wirst du die 1.300 Zeilen brechen, um alle

Kopf

mehrmals zu wissen? Können wir annehmen, dass Sie das CSV in eine temporäre Tabelle lesen oder ein Rowset dafür öffnen können? – Matt

Antwort

0

Ich nehme an, Sie können die CSV in eine temporäre Tabelle oder schreiben Sie einfach nur gegen die CSV mit offenen Rowset oder etwas, aber hier ist eine Idee, wie Sie die gewünschte Kodierung erhalten. Wenn mehr als ein Lebenslauf ersetzen existiert PARTITON BY 1 mit PARTITION BY UniqueResumeId

;WITH cteOriginalRowNumber AS (
    SELECT 
     Line 
     ,ROW_NUMBER() OVER (PARTITION BY 1 ORDER BY (SELECT 0)) as OriginalRowNum 
    FROM 
     CSVSource 
) 

, cteReverseRowNumber AS (
    SELECT 
     Line 
     ,OriginalRowNum 
     ,ROW_NUMBER() OVER (PARTITION BY 1 ORDER BY OriginalRowNum DESC) as ReverseRowNum 
    FROM 
     cteOriginalRowNumber 
) 

SELECT 
    CASE 
     WHEN 
      OriginalRowNum = 1 
      OR (OriginalRowNum = 2 AND ReverseRowNum = 1) 
      THEN '<p>' + Line + '</p>' 
     WHEN OriginalRowNum = 2 THEN '<p>' + Line + '<br />' 
     WHEN OriginalRowNum > 2 AND ReverseRowNum = 1 THEN Line + '</p>' 
     ELSE Line + '<br />' 
    END 
FROM 
    cteReverseRowNumber 
ORDER BY 
    OriginalRowNum