Как удалить, которые находятся в начале строки?

0

Вот мой стол:

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

Он просто удаляет окруженные пространства.

  • 0
    какую версию MySQL вы используете?
  • 0
    set content = REPLACE(content, '<br>', '') ?
Показать ещё 1 комментарий
Теги:

6 ответов

0
Лучший ответ

Вы можете использовать такой запрос:

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)]>
  • 1
    Mariadb здесь, и он просит mysql.
0
SELECT CASE WHEN substr(content,1,4) ='<br>' 
            THEN substr(content,5,len(content))  
            ELSE content 
       END as content  
0
SELECT REPLACE('content','<br>','') FROM MYTB
WHERE content LIKE '<br>%'
  • 2
    Он сказал, начиная не все <br>
  • 0
    Спасибо за указание на это
Показать ещё 1 комментарий
0

Вы можете использовать REGEXP в MYSQL:

SELECT REPLACE('content','<br>','') as content  FROM table WHERE content REGEXP '^<br>'
-1

Используйте подстроку MYSQL с условием if.

SET content = TRIM
                (IF
                  (SUBSTRING
                     (TRIM(content), 1, 4) = '<br>',
                      SUBSTRING(TRIM(content), 5), content
                  )
                );
-3

MYSQL имеет функцию substring которая может быть использована:

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню