UPDATE заданной позиции в строке
День добрый!
Подскажите кто знает, по MySQL гуглил на тему SUBSTRING(), REPLACE() - но четкого ответа не нашел.
Есть таблица settings, в ней поле (VARCHAR) matrix. Пример этого поля: 100011001000. Ну, в таком виде настройки хранятся тоже.
Стоит задача делать UPDATE допустим 4-го символа этой строки, не затрагивая соседних, причем хоть 1 строки хоть всех - по условию WHERE.
Я конечно мог бы их последовательно извлекать-обновлять все требуемые, но зачем если это может сам SQL?
|
Цитата:
Цитата evpu
Стоит задача делать 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>
|
Время: 22:16.
© OSzone.net 2001-