Войти

Показать полную графическую версию : UPDATE заданной позиции в строке


evpu
09-06-2016, 07:25
День добрый!

Подскажите кто знает, по MySQL гуглил на тему SUBSTRING(), REPLACE() - но четкого ответа не нашел.

Есть таблица settings, в ней поле (VARCHAR) matrix. Пример этого поля: 100011001000. Ну, в таком виде настройки хранятся тоже.
Стоит задача делать UPDATE допустим 4-го символа этой строки, не затрагивая соседних, причем хоть 1 строки хоть всех - по условию WHERE.

Я конечно мог бы их последовательно извлекать-обновлять все требуемые, но зачем если это может сам SQL?

Iska
09-06-2016, 15:40
Стоит задача делать UPDATE допустим 4-го символа этой строки, не затрагивая соседних, причем хоть 1 строки хоть всех - по условию WHERE. »
Никак. Обновлять можно только поле целиком. Поэтому нужно взять это поле, выделить из него три начальных символа и оставшиеся, начиная с пятого. Полученное объединить в новую строку.

Пример:
mysql> select * from MyTable;
+------+--------------+
| ID | Matrix |
+------+--------------+
| 1 | aaaaaa |
| 2 | bbbbbb |
| 3 | cccccc |
| 4 | 100011001000 |
| 5 | dddddd |
+------+--------------+
5 rows in set (0.00 sec)

mysql> update MyTable set Matrix=concat(left(Matrix, 3), '9', substring(Matrix, 5));
Query OK, 5 rows affected (0.04 sec)
Rows matched: 5 Changed: 5 Warnings: 0

mysql> select * from MyTable;
+------+--------------+
| ID | Matrix |
+------+--------------+
| 1 | aaa9aa |
| 2 | bbb9bb |
| 3 | ccc9cc |
| 4 | 100911001000 |
| 5 | ddd9dd |
+------+--------------+
5 rows in set (0.00 sec)

mysql>

evpu
09-06-2016, 17:46
Благодарю!




© OSzone.net 2001-2012