1. 程式人生 > 其它 >MySQL replace用法簡介

MySQL replace用法簡介

今天在工作的過程中碰到一個問題,要把資料庫中某個列的所有值中含有"ceshi.test.com"的字元去掉,本來可以寫個指令碼,把所有的值都取出再匯入進行處理,但是那樣就效率非常低了,想到看試下能不能直接在MySQL中用SQL語句直接來處理,就想到mysql的replace函式。

mysql replace用法 1. replace into

replace into table (id,name) values('1','aa'),('2','bb');

此語句的作用是向表table中插入兩條記錄。如果主鍵id為1或2不存在。

就相當於 insert into table (id,name)values('1','aa'),('2','bb');

如果存在相同的值則不會插入資料。

2.replace(object,search,replace)

UPDATE 表名 SET 欄位名= REPLACE( 欄位名, '替換前關鍵字', '替換後關鍵字');

如下:

replace用法舉例:

應用場景:

遊戲資料庫新服初始化沒有更改組號id,開服後用戶id全為初始化組號。

導致問題:

可能導致合服時出現重複id。

解決方案:

修改組號,因為組號為id前三位,所以只需把前三位替換正確的組號即可。

操作步驟:

  1. 查出都有哪些表有id欄位: select TABLE_SCHEMA,TABLE_NAME,COLUMN_NAME frominformation_schema.COLUMNS where COLUMN_NAME='id';
  2. 對前幾位關鍵字替換方法: UPDATE 表名 SET 欄位名= REPLACE( 替換前的欄位, '替換前關鍵字', '替換後關鍵字' ) WHERE 欄位名 REGEXP "替換前的欄位值";
  3. 批量操作: update test.test_1 setid=REPLACE(id,10100,10700); update test.test_2 setid=REPLACE(id,10100,10700); update test.test_3 setid=REPLACE(id,10100,10700);

驗證測試:

資料庫中檢查,通知研發、測試驗證。