代码之家  ›  专栏  ›  技术社区  ›  Martin AJ

如何删除字符串开头的<br>s?

  •  0
  • Martin AJ  · 技术社区  · 6 年前

    这是我的桌子:

    -- mytb
    +----+---------------------------+
    | id |         content           |
    +----+---------------------------+
    | 1  | <br> whatever ..          |
    | 2  | whatever <br> whatever .. |
    | 3  |    <br> whatever ..       |
    | 4  | <br> whatever <br> ..     |
    +----+---------------------------+
    

    我需要把所有的 <br> 在字符串的开头。我可以用 ^ 在php regex中。我怎样才能在MySQL中做到这一点?

    update mytb set content = trim(content)
    

    它只是移除被包围的空间。

    6 回复  |  直到 6 年前
        1
  •  0
  •   Bernd Buffen    6 年前

    您可以使用这样的查询:

    SELECT REGEXP_REPLACE('<br>Hello<br>world<br>','^(<br>)*(.*?)(<br>)*$','\\2');
    

    样品

    MariaDB [(none)]> SELECT REGEXP_REPLACE('<br>Hello<br>world<br>','^(<br>)*(.*?)(<br>)*$','\\2');
    +------------------------------------------------------------------------+
    | REGEXP_REPLACE('<br>Hello<br>world<br>','^(<br>)*(.*?)(<br>)*$','\\2') |
    +------------------------------------------------------------------------+
    | Hello<br>world                                                         |
    +------------------------------------------------------------------------+
    1 row in set (0.00 sec)
    
    MariaDB [(none)]> SELECT REGEXP_REPLACE('Hello<br>world<br>','^(<br>)*(.*?)(<br>)*$','\\2');
    +--------------------------------------------------------------------+
    | REGEXP_REPLACE('Hello<br>world<br>','^(<br>)*(.*?)(<br>)*$','\\2') |
    +--------------------------------------------------------------------+
    | Hello<br>world                                                     |
    +--------------------------------------------------------------------+
    1 row in set (0.00 sec)
    
    MariaDB [(none)]> SELECT REGEXP_REPLACE('<br>Hello<br>world','^(<br>)*(.*?)(<br>)*$','\\2');
    +--------------------------------------------------------------------+
    | REGEXP_REPLACE('<br>Hello<br>world','^(<br>)*(.*?)(<br>)*$','\\2') |
    +--------------------------------------------------------------------+
    | Hello<br>world                                                     |
    +--------------------------------------------------------------------+
    1 row in set (0.00 sec)
    
    MariaDB [(none)]> SELECT REGEXP_REPLACE('Hello<br>world','^(<br>)*(.*?)(<br>)*$','\\2');
    +----------------------------------------------------------------+
    | REGEXP_REPLACE('Hello<br>world','^(<br>)*(.*?)(<br>)*$','\\2') |
    +----------------------------------------------------------------+
    | Hello<br>world                                                 |
    +----------------------------------------------------------------+
    1 row in set (0.00 sec)
    
    MariaDB [(none)]>
    
        2
  •  0
  •   HamzaNig    6 年前

    在mysql中可以使用regexp:

    SELECT REPLACE('content','<br>','') as content  FROM table WHERE content REGEXP '^<br>'
    
        3
  •  0
  •   saravanatn    6 年前
    SELECT REPLACE('content','<br>','') FROM MYTB
    WHERE content LIKE '<br>%'
    
        4
  •  -1
  •   Anshuman Jaiswal    6 年前
    SELECT CASE WHEN substr(content,1,4) ='<br>' 
                THEN substr(content,5,len(content))  
                ELSE content 
           END as content  
    
        5
  •  -1
  •   Jithin Scaria MaxLascombe    6 年前

    在if条件下使用mysql子字符串。

    SET content = TRIM
                    (IF
                      (SUBSTRING
                         (TRIM(content), 1, 4) = '<br>',
                          SUBSTRING(TRIM(content), 5), content
                      )
                    );
    
        6
  •  -2
  •   Terje D.    6 年前

    MySQL有一个 substring 可使用的功能:

    UPDATE mytb SET content = SUBSTRING(content, 5)
    WHERE content LIKE '<br>%'