Вы можете использовать locate
и substring
, чтобы нарезать эти строки. Например:
mysql> select url, case when locate('?', url) = 0 then url else substring(url, 1, locate('?', url) - 1) end as truncated from urls;
+------------------+-----------+
| url | truncated |
+------------------+-----------+
| url.com?some=0 | url.com |
| url2.com?some=14 | url2.com |
| url3.com | url3.com |
+------------------+-----------+
так что это должно сработать:
update your_table
set url = case when locate('?', url) = 0 then url else substring(url, 1, locate('?', url) - 1) end
Другой вариант: substring_index
:
mysql> select url, substring_index(url, '?', 1) from urls;
+------------------+------------------------------+
| url | substring_index(url, '?', 1) |
+------------------+------------------------------+
| url3.com | url3.com |
| url.com?some=0 | url.com |
| url2.com?some=14 | url2.com |
+------------------+------------------------------+
так что это также должно работать:
update your_table
set url = substring_index(url, '?', 1)