#java #mysql #eclipse
#java #mysql #eclipse
Вопрос:
У меня есть оператор SQL Select, который создает таблицу из нескольких полей. Я использую СЛУЧАЙ / КОГДА для изменения некоторых значений, но я застрял на том, как форматировать результаты.
SELECT DISTINCT field1, field2, field3, field4,
CASE meta_value WHEN 'male' then 'M' WHEN 'female' THEN 'F' etc.
Возвращаемые телефонные номера могут содержать другие символы, которые я хотел бы удалить, т.е.:
(404) 202-2039
404-202-2039
1-404-202-2039
Я хотел бы возвращать только числа без пробелов или других символов, дефисов, круглых скобок и т. Д:
4042022039
Есть идеи о том, как лучше всего это сделать?
Комментарии:
1. Пожалуйста, укажите в своем вопросе базу данных (и версию), которую вы используете: mysql, oracle, sqlserver …? Строковые функции сильно зависят от базы данных.
2. Нет
для международных номеров
44 (0)123 456 789
?3. Вам понадобится
REPLACE()
функция для преобразования ненужных символов в пустые строки. Если ваш компонент database Engine поддерживаетREPLACE_REGEX()
такую функциональность, вы сможете избавиться от всех ненужных символов за один вызов.4. Кстати, я использую MySQL.
Ответ №1:
Если вы используете MySQL 8.0, вы можете использовать regexp_replace()
:
regexp_replace(phone_number, '[^0-9]', '') clean_phone_number
Комментарии:
1. @DavidS.:
select field1, field2, regexp_replace(phone_number, '[^0-9]', '') clean_phone_number, case meta_value when ... then ... end from ...
2. Похоже, я застрял на MySQL 5.7, благодаря моему хостинг-провайдеру. Я не вижу, где реализовано или поддерживается REGEXP_REPLACE. Большое спасибо, ребята!