#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-й символ в большинстве записей является дефисом. Хорошая мысль, хотя!