Можно ли выбрать числовые символы только из поля VARCHAR в MySQL без использования пользовательской функции?

#mysql

#mysql

Вопрос:

Я импортирую данные в стороннюю CRM, и ограничения на поле номера телефона более жесткие, чем в исходной базе данных (MySQL). Я хотел бы получить первые 10 числовых символов в выборе. У меня нет гибкости для очистки существующих данных. Я могу работать только с тем, что есть. Все, что я могу найти на форумах до сих пор, похоже, создает пользовательскую функцию. Является ли пользовательская функция единственным способом? Среда — MySQL 5.7.19.

Заранее спасибо!

Комментарии:

1. Взгляните на w3schools.com/sql/func_mysql_substring.asp

2. Вы могли бы использовать REGEXP_SUBSTR() , если вы обновитесь до MySQL 8.0.

Ответ №1:

В MySQL 5.7, вот как я бы это сделал:

 SELECT LEFT(mycolumn, 10) 0 FROM ...
 

Встроенная функция LEFT() использует только первые N символов.

0 Убедитесь, что оно приведено к числу, на всякий случай, если первые N символов содержат некоторые нечисловые символы. Приведение к числовому в MySQL использует только самые левые числовые символы, а когда оно достигает нечислового символа, игнорирует остальные.


Сначала вы можете избавиться от дефисов, а затем использовать результат, как я показал выше:

 SELECT LEFT(REPLACE(mycolumn, '-', ''), 10) 0 FROM ...
 

Комментарии:

1. Это сработало бы, за исключением того, что оно сокращает большинство записей после первых 3 цифр, поскольку 4-й символ в большинстве записей является дефисом. Хорошая мысль, хотя!