|
|
|
Замена в sql-запросе
|
|||
|---|---|---|---|
|
#18+
Добрый день! Помогите, пожалуйста. Имеет БД номеров телефонов клиентов компании, сейчас написание телефонов такого вида 9-999-999-99-99. Каким запросом я мог бы удалить все тире из номера? Телефонов много, поэтому хотелось бы чтобы действие применилось ко всем записям телефонов.Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2016, 16:23 |
|
||
|
Замена в sql-запросе
|
|||
|---|---|---|---|
|
#18+
wadman, MySQL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2016, 16:33 |
|
||
|
Замена в sql-запросе
|
|||
|---|---|---|---|
|
#18+
Да, я уже начитался про replace. Только понять не могу в какую часть кода его вставлять и как его зациклить, чтобы он применил действие во всех ячейках. Код следующий: авторSELECT accounts.id, users.mobile_telephone, accounts.balance FROM accounts INNER JOIN account_tariff_link INNER JOIN users WHERE account_tariff_link.account_id = accounts.id AND accounts.id = users.id AND accounts.balance >= 0 AND users.mobile_telephone NOT LIKE '' AND account_tariff_link.is_deleted = 0 AND ( account_tariff_link.tariff_id = 2 or account_tariff_link.tariff_id = 3 or account_tariff_link.tariff_id = 4 or account_tariff_link.tariff_id = 7 or account_tariff_link.tariff_id = 8 or account_tariff_link.tariff_id = 9 or account_tariff_link.tariff_id = 20 or account_tariff_link.tariff_id = 21 or account_tariff_link.tariff_id = 32 or account_tariff_link.tariff_id = 33 or account_tariff_link.tariff_id = 34 or account_tariff_link.tariff_id = 36 or account_tariff_link.tariff_id = 37 or account_tariff_link.tariff_id = 38 or account_tariff_link.tariff_id = 39 or account_tariff_link.tariff_id = 41 or account_tariff_link.tariff_id = 42 or account_tariff_link.tariff_id = 43 or account_tariff_link.tariff_id = 44 or account_tariff_link.tariff_id = 45 or account_tariff_link.tariff_id = 47 or account_tariff_link.tariff_id = 48 ) GROUP BY accounts.id ORDER BY accounts.id ASC; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2016, 16:37 |
|
||
|
Замена в sql-запросе
|
|||
|---|---|---|---|
|
#18+
Я сделал. Может кому пригодится.. UPDATE users SET mobile_telephone = REPLACE('mobile_telephone', '-', '') WHERE users.id>0 Тем самым убрал ВСЕ тире из ВСЕХ номеров телефонов. У меня еще вопрос. Как можно дописать к номеру 9999999999 дописать +7 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2016, 17:30 |
|
||
|
Замена в sql-запросе
|
|||
|---|---|---|---|
|
#18+
fixfixУ меня еще вопрос. Как можно дописать к номеру 9999999999 дописать +7 ? Аналогично предыдущему, только проверяй содержит строка цифру или нет. Если содержит то добавляй, если нет то пропускай (могут по идее быть и пустые строки наверное). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2016, 18:20 |
|
||
|
Замена в sql-запросе
|
|||
|---|---|---|---|
|
#18+
fixfixк номеру 9999999999 дописать +7CONCAT() fixfix Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. AND ( account_tariff_link.tariff_id IN (2,3,4,7,8,9,20,21,32,33,34,36,37,38,39,41,42,43,44,45,47,48) ) Модератор: Тема перенесена из форума "Вопрос-Ответ". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2016, 18:30 |
|
||
|
Замена в sql-запросе
|
|||
|---|---|---|---|
|
#18+
Может еще кому пригодится.. авторUPDATE users SET mobile_telephone = CONCAT('+7',users.mobile_telephone) WHERE users.id>0 AND users.mobile_telephone NOT LIKE '' Тем самым добавил ко всем номерам +7 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2016, 11:11 |
|
||
|
Замена в sql-запросе
|
|||
|---|---|---|---|
|
#18+
Спасибо всем кто откликнулся! Добра! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2016, 11:11 |
|
||
|
Замена в sql-запросе
|
|||
|---|---|---|---|
|
#18+
А теперь проверь длину этого поля без пробелов. Чтоб номера были корректны ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2016, 11:13 |
|
||
|
Замена в sql-запросе
|
|||
|---|---|---|---|
|
#18+
Проверил пробелы по краям записи данным способом авторUPDATE users SET users.mobile_telephone = TRIM(users.mobile_telephone) WHERE users.id>0 Внутри самой записи пробелов нет :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2016, 14:19 |
|
||
|
Замена в sql-запросе
|
|||
|---|---|---|---|
|
#18+
Это ты пробелы убрал. А теперь длину проверь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2016, 14:21 |
|
||
|
Замена в sql-запросе
|
|||
|---|---|---|---|
|
#18+
Знать бы еще как это сделать.. Сейчас почитаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2016, 14:39 |
|
||
|
Замена в sql-запросе
|
|||
|---|---|---|---|
|
#18+
Проверенный рабочий запрос. Выводит все строки, длинна которых больше 12 символов, сортировка по полю id. авторSELECT users.id FROM users WHERE CHARACTER_LENGTH(mobile_telephone)>12 ORDER BY users.id ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2016, 15:07 |
|
||
|
Замена в sql-запросе
|
|||
|---|---|---|---|
|
#18+
Вообще не могу понять одну вещь - во всех мануалах sql пишется про параметр LEN(), при этом MySQL и Workbench на него ругаются. Данные СУБД отлично работают с параметром CHARACTER_LENGTH. ps спасибо еще раз за помощь! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2016, 15:57 |
|
||
|
Замена в sql-запросе
|
|||
|---|---|---|---|
|
#18+
fixfixво всех мануалах sql пишется про параметр LEN() Вот мануал . Ышшы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2016, 17:32 |
|
||
|
Замена в sql-запросе
|
|||
|---|---|---|---|
|
#18+
fixfixЛадно, не буду забрасывать ссылками :-) Мануал есть только один. С точностью до версии. А всё остальное, что ему противоречит, есть голимый бред безграмотных дилетантов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2016, 21:12 |
|
||
|
Замена в sql-запросе
|
|||
|---|---|---|---|
|
#18+
fixfixПроверенный рабочий запрос. Выводит все строки, длинна которых больше 12 символов, сортировка по полю id. авторSELECT users.id FROM users WHERE CHARACTER_LENGTH(mobile_telephone)>12 ORDER BY users.id <>12 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2016, 02:23 |
|
||
|
Замена в sql-запросе
|
|||
|---|---|---|---|
|
#18+
Ребятки, снова все привет! Не буду плодить темы, спрошу здесь. Есть столбец "balance", в каждой строке указывается текущий баланс для клиента в виде "29.312512341". Подскажите, как мне обрезать все значения после точки чтобы каждая запись в столбце приняла вид просто "29" без этих длинны копеек. Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2016, 11:47 |
|
||
|
Замена в sql-запросе
|
|||
|---|---|---|---|
|
#18+
fixfixв каждой строке указывается текущий баланс для клиента в виде "29.312512341".Баланс в строковом поле??? Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2016, 12:17 |
|
||
|
Замена в sql-запросе
|
|||
|---|---|---|---|
|
#18+
miksoft, извините, я не понял что значит "в строковом поле" Сделал как вы указали, ничего не поменялось. После точки так и пишется куча цифр. авторSELECT balance FROM accounts WHERE substring_index(balance,'.',1) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2016, 15:42 |
|
||
|
Замена в sql-запросе
|
|||
|---|---|---|---|
|
#18+
Есть столбец balance, вид следующий: id balance 1 25.312312356 2 4.341225664 3 556.321562032 4 1.52351201103 ........и так далее Мне нужно обрезать точку и всё что после нее идет. Есть мысли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2016, 16:01 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39317972&tid=1831359]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
61ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 193ms |
| total: | 339ms |

| 0 / 0 |
