Вот мой стол:
-- 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)
Он просто удаляет окруженные пространства.
Вы можете использовать такой запрос:
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)]>
SELECT CASE WHEN substr(content,1,4) ='<br>'
THEN substr(content,5,len(content))
ELSE content
END as content
SELECT REPLACE('content','<br>','') FROM MYTB
WHERE content LIKE '<br>%'
Вы можете использовать REGEXP в MYSQL:
SELECT REPLACE('content','<br>','') as content FROM table WHERE content REGEXP '^<br>'
Используйте подстроку MYSQL с условием if.
SET content = TRIM
(IF
(SUBSTRING
(TRIM(content), 1, 4) = '<br>',
SUBSTRING(TRIM(content), 5), content
)
);
MYSQL имеет функцию substring
которая может быть использована:
UPDATE mytb SET content = SUBSTRING(content, 5)
WHERE content LIKE '<br>%'
set content = REPLACE(content, '<br>', '')
?