mysql裏的replace使用有兩種情況,一種是replace語句,一種是replace函數,一個是語句一個是函數,一定區別清楚。
replace語句:插入數據
replace into tablename(filed1,filed2...) values(val1,val2...),(val1,val2...)...;
這裏replace和insert有什麼異同:
replace語句需要有delete和insert權限,因爲它具備替換擁有唯一索引或者主鍵索引重複數據的能力,也就是如果使用replace into插入的數據的唯一索引或者主鍵索引與之前的數據有重複的情況,將會刪除原先的數據,然後再進行添加。
如果replace插入數據的表沒有唯一索引或者主鍵索引,那麼它的行爲和insert毫無區別。
例子:
replace語句用法注意點:
1:如果replace的表有多個唯一索引,並且replace的數據複製了多個唯一索引的值,那麼可能單一行數據代替多個行的舊數據。
2:replace的數據取設置的值,如果沒有設置則會取默認的值,replace不能從當前行中引用值,也不能在新行中使用值。
3:由於replace會對唯一索引和主鍵索引重複的進行刪除和重新添加,如果有自增數據,且replace沒有設置成要替換的自增列數據,將可能會破壞其他表與該表老數據之間的關聯性。
replace函數:替換特定字符
update tablename set filedname=replace(filedname,str,replace_str);