2
我有一個名爲testing的表,其中包含一個包含MEDIMTEXT
類型的列。
在TEXT數據類型中連接字符串mysql
mysql> desc testing;
+-------+------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+-------+
| id | tinyint(4) | YES | | NULL | |
| data | mediumtext | YES | | NULL | |
+-------+------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
而且表的內容是like--
mysql> select * from testing;
+------+--------------------------------+
| id | data |
+------+--------------------------------+
| 1 | This is the first data entered.|
+------+--------------------------------+
1 row in set (0.00 sec)
在ID = 1名爲data
的專欄中,我想連接另一個字符串EX- 「的毗連我」使它看起來像「這是進入的第一個數據。CONCAT我」
我可以通過使用
做UPDATE testing SET data=CONCAT(data,'Concat me') WHERE id=1;
但我認爲它會使整個字段先被讀取,然後串聯,並最終將新創建的字符串替換爲前一個字符串。
如果文本太長,則需要很長時間才能完成。
喜歡 - 如果有文字的15 MB
和文字CONCAT的10 bytes
,然後15 MB將被讀取,那麼10個字節的數據連接起來,然後15 MB + 10個字節寫回的數據。
我想問一下,是否存在任何其他方法,以便將字符串連接起來,而不是替換完整的字符串?
這樣只有10個字節被寫入數據庫。
可能是我錯了,mysql將管理該命令以使其高效工作。
謝謝你的回答。我沒有關於該專欄的任何索引。我加入一條線將以下問題:「如果有15 MB的文字和10個字節的文本CONCAT,那麼15 MB將被讀取,那麼10個字節的連結數據,然後15 MB + 10個字節寫回的數據。」 。會發生這種情況還是隻有10個字節會寫入數據庫? –
我相信在'concat'函數中會有'data'的查詢。然後'concat'函數返回更新後的字符串,然後將其設置在'data'列中。我不認爲有任何這樣的功能可以讓你像你想要的那樣添加'Concat me'。看看'replace'函數(http://dev.mysql.com/doc/refman/5.0/en/replace.html);它可能是類似於你想要的東西,但因爲你是在字符串末尾添加額外的數據,我不知道我們怎樣才能使它發揮作用。 – vee