SQL中的替換函數replace()使用
語法 REPLACE ( string_expression , string_pattern , string_replacement )數據庫
參數 string_expression 要搜索的字符串表達式。string_expression 能夠是字符或二進制數據類型。 string_pattern 是要查找的子字符串。string_pattern 能夠是字符或二進制數據類型。string_pattern 不能是空字符串 ('')。 string_replacement 替換字符串。string_replacement 能夠是字符或二進制數據類型。express
返回類型 若是其中的一個輸入參數數據類型爲 nvarchar,則返回 nvarchar;不然 REPLACE 返回 varchar。 若是任何一個參數爲 NULL,則返回 NULL。函數
上面都是官話,很差懂!翻成白話:REPLACE(String,from_str,to_str) 即:將String中全部出現的from_str替換爲to_str。測試
說明:接觸這個參數是由於我要建立合同,分爲草稿和提審狀態,而且修改也不知道用戶修改哪些字段,因此應用到了替換插入 relpace into 用法:用的時候在數據庫建給某一個字段建一個惟一索引,保證數據的惟一性並能更改, 若是插入的時候只要索引相同 其餘字段不一樣 都會更改,由此很是便利spa
1、準備實驗環境
1.1 建立表:
CREATE TABLE test_tb
(
id
int(10) unsigned NOT NULL auto_increment COMMENT '主鍵自增',
name
char(30) default NULL COMMENT '姓名',
address
char(60) default NULL COMMENT '地址',
country
char(200) default NULL COMMENT '國家',
PRIMARY KEY (id
)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='測試表'3d
1.2 插入數據:
insert into test_tb(name,address,country) values ('zhangsan','北京 朝陽區','中國'), ('lisi','上海 浦東區','中國'), ('wangwu','鄭州金水區','中國'), ('zhaoliu','香港九龍','中國香港'), ('Q7','加州牛肉','美國'), ('wangba','新九州島','日本') code
2、查詢替換
2.1 將address字段裏的 「區」 替換爲 「嘔」 顯示,以下
select *,replace(address,'區','嘔') AS rep from test_tb blog
2.2 將address字段裏的 「九」 替換爲 「十」 顯示,以下
select *,replace(address,'九','十') AS rep from test_tb where id in (4,6) 索引
總結:聯想到前面有講過 使用IF(expr1,expr2,expr3) 及 CASE...WHEN...THEN...END 能夠實現查詢結果的別名顯示, 但區別是:這二者是將查詢結果值作總體的別名顯示,而replace則能夠對查詢結果的局部字符串作替換顯示(輸出)。rem
3、更新替換
3.1 將address字段裏的 「東」 替換爲 「西」 ,以下
update test_tb set address=replace(address,'東','西') where id=2
總結:對字段中局部字符串作更新替換。
4、插入替換
4.1 將id=6的name字段值改成wokou
replace into test_tb VALUES(6,'wokou','新九州島','日本')
總結:向表中「替換插入」一條數據,若是原表中沒有id=6這條數據就做爲新數據插入(至關於insert into做用);若是原表中有id=6這條數據就作替換(至關於update做用)。對於沒有指定的字段以默認值插入。