Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   UPDATE заданной позиции в строке (http://forum.oszone.net/showthread.php?t=315720)

evpu 09-06-2016 07:25 2641582

UPDATE заданной позиции в строке
 
День добрый!

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

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

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

Iska 09-06-2016 15:40 2641722

Цитата:

Цитата 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>


evpu 09-06-2016 17:46 2641751

Благодарю!


Время: 22:16.

Время: 22:16.
© OSzone.net 2001-