2016-05-14 15 views
0

Hallo, ich habe eine harte Zeit, die für Strings mit Zeilenabstand oder char (10)SQL Query Entfernen zusätzliche Zeile CHAR (10) in string

Test-String

"1st line string char(10) char(10) 2nd line string char(10) char(10) char(10) 3rd line string char(10)" 

erwartetes Ergebnis ersetzen zu formulieren

1st line string 
2nd line string 
3rd line string 

Wie erreicht man diesen Ausgang?

+0

Sind Sie auf Windows oder Linux? Ihr erwartetes Ergebnis ist unklar. Welche Zeichen bilden eine neue Zeile in Ihrer Datei? –

+0

in MSSQL, können Sie wählen "erste Zeile" + char (10) + "zweite Zeile" + char (10) + "dritte Zeile" –

Antwort

0

können Sie SPLIT_STR verwenden Funktion

wie diese

SELECT SPLIT_STR("1st line string char(10) char(10) 2nd line string char(10) char(10) char(10) 3rd line string char(10)", 'char(10)', 1) , 
     SPLIT_STR("1st line string char(10) char(10) 2nd line string char(10) char(10) char(10) 3rd line string char(10)", 'char(10) ', 3) , 
SPLIT_STR("1st line string char(10) char(10) 2nd line string char(10) char(10) char(10) 3rd line string char(10)", 'char(10) ', 5) 
+0

danke, aber es wird "erste Zeile String generieren line string "Meine erwartete Ausgabe wäre" 1. Zeile string char (10) 2. Zeile string char (10) 3. Zeile string char (10). – iCeR

+0

@iCeR Das ist nicht die gleiche erwartete Ausgabe, die Sie in der Frage geschrieben haben. – Barmar

0

Verwenden der REPLACE Funktion char(10) mit einem Newline-Zeichen zu ersetzen.

REPLACE("1st line string char(10) char(10) 2nd line string char(10) char(10) char(10) 3rd line string char(10)", "char(10)", "\n") 
0

Das ist wie fast sieht was Sie suchen: müssen Sie den String Ihnen DB Feld

SELECT 
TRIM(
    REPLACE(
    REPLACE( 
     REPLACE("1st line string char(10) char(10) 2nd line string char(10) char(10) char(10) 3rd line string char(10)", 
      ' char(10) char(10) char(10) ', 
      '\n'), 
     ' char(10) char(10) ', 
     '\n'), 
     ' char(10)', 
     '\n') 
    ); 

Probe

MariaDB [(none)]> SELECT 
    -> TRIM(
    -> REPLACE(
    ->  REPLACE(
    ->  REPLACE("1st line string char(10) char(10) 2nd line string char(10) char(10) char(10) 3rd line string char(10)", 
    ->    ' char(10) char(10) char(10) ', 
    ->    '\n'), 
    ->   ' char(10) char(10) ', 
    ->   '\n'), 
    ->  ' char(10)', 
    ->  '\n') 
    ->  ) AS result; 
+-----------------------------------------------------+ 
| result            | 
+-----------------------------------------------------+ 
| 1st line string 
2nd line string 
3rd line string 
| 
+-----------------------------------------------------+ 
1 row in set (0.00 sec) 

MariaDB [(none)]> 
0

euch danken ändern, kam ich mit diesem. Ich übersetze es in Funktion

DECLARE @str AS VARCHAR(MAX) 

    SET @str = 'TEST ' + CHAR(10) + CHAR(10) + CHAR(10) + CHAR(10) + CHAR(10) + CHAR(10) + CHAR(10) + CHAR(10) + CHAR(10) + CHAR(10) + CHAR(10) + CHAR(10) + CHAR(10) + CHAR(10) + CHAR(10) + 'TEST ' + CHAR(10)+ CHAR(10)+ CHAR(10)+ CHAR(10)+ 'TEST ' + CHAR(10)+'TEST ' + CHAR(10) + CHAR(10)+ CHAR(10); 

    SELECT @str = REPLACE(@str,CHAR(10),'{}') 

    WHILE (CHARINDEX('}{',CONVERT (VARCHAR(MAX),@str),0) >0) 
     SELECT @str = REPLACE(@str,'}{','') 



    SELECT REPLACE(@str,'{}',CHAR(10))