Как удалить <br>с, которые находятся в начале строки? - PullRequest
0 голосов
/ 02 июля 2018

Вот мой стол:

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

Мне нужно удалить все <br> s, которые находятся в начале строки. Я могу указать это, используя ^ в регулярных выражениях PHP. Как я могу сделать то же самое в MySQL?

update mytb set content = trim(content)

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

Ответы [ 6 ]

0 голосов
/ 02 июля 2018

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

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

Sample

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)]>
0 голосов
/ 02 июля 2018

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

SET content = TRIM
                (IF
                  (SUBSTRING
                     (TRIM(content), 1, 4) = '<br>',
                      SUBSTRING(TRIM(content), 5), content
                  )
                );
0 голосов
/ 02 июля 2018

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

SELECT REPLACE('content','<br>','') as content  FROM table WHERE content REGEXP '^<br>'
0 голосов
/ 02 июля 2018
SELECT CASE WHEN substr(content,1,4) ='<br>' 
            THEN substr(content,5,len(content))  
            ELSE content 
       END as content  
0 голосов
/ 02 июля 2018

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

UPDATE mytb SET content = SUBSTRING(content, 5)
WHERE content LIKE '<br>%'
0 голосов
/ 02 июля 2018
SELECT REPLACE('content','<br>','') FROM MYTB
WHERE content LIKE '<br>%'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...