sql語句replace函數的使用


SQL中的替換函數replace()使用

語法
REPLACE ( string_expression , string_pattern , string_replacement )

參數
string_expression 要搜索的字符串表達式。string_expression 可以是字符或二進制數據類型。
string_pattern 是要查找的子字符串。string_pattern 可以是字符或二進制數據類型。string_pattern 不能是空字符串 ('')。
string_replacement 替換字符串。string_replacement 可以是字符或二進制數據類型。

返回類型
如果其中的一個輸入參數數據類型為 nvarchar,則返回 nvarchar;否則 REPLACE 返回 varchar。
如果任何一個參數為 NULL,則返回 NULL。

上面都是官話,不好懂!翻成白話:REPLACE(String,from_str,to_str) 即:將String中所有出現的from_str替換為to_str。

說明:接觸這個參數是因為我要創建合同,分為草稿和提審狀態,並且修改也不知道用戶修改哪些字段,所以應用到了替換插入 relpace into
用法:用的時候在數據庫建給某一個字段建一個唯一索引,保證數據的唯一性並能更改, 如果插入的時候只要索引相同 其他字段不同 都會更改,由此非常便利

一、准備實驗環境

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='測試表'

1.2 插入數據:

insert into test_tb(name,address,country) values
('zhangsan','北京 朝陽區','中國'),
('lisi','上海 浦東區','中國'),
('wangwu','鄭州金水區','中國'),
('zhaoliu','香港九龍','中國香港'),
('Q7','加州牛肉','美國'),
('wangba','新九州島','日本')

二、查詢替換

2.1 將address字段里的 “區” 替換為 “嘔” 顯示,如下

select *,replace(address,'區','嘔') AS rep
from test_tb

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則可以對查詢結果的局部字符串做替換顯示(輸出)。

三、更新替換

3.1 將address字段里的 “東” 替換為 “西” ,如下

update test_tb set address=replace(address,'東','西') where id=2

總結:對字段中局部字符串做更新替換。

四、插入替換

4.1 將id=6的name字段值改為wokou

replace into test_tb VALUES(6,'wokou','新九州島','日本')

總結:向表中“替換插入”一條數據,如果原表中沒有id=6這條數據就作為新數據插入(相當於insert into作用);如果原表中有id=6這條數據就做替換(相當於update作用)。對於沒有指定的字段以默認值插入。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM