SQL查询删除字符串中的额外行CHAR(10)

时间:2016-05-14 06:59:57

标签: mysql sql

您好我很难用行空间或char(10)

来表示替换字符串

测试字符串

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

预期结果

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

如何实现此输出?

4 个答案:

答案 0 :(得分:0)

您可以使用SPLIT_STR功能

像这样

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)

答案 1 :(得分:0)

使用REPLACE功能将char(10)替换为换行符。

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")

答案 2 :(得分:0)

这看起来几乎就是你要找的东西: 您必须将字符串更改为DB字段

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')
     );

<强>样品

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)]>

答案 3 :(得分:0)

谢谢你们,我想出了这个。我会把它翻译成函数

   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))