replace替換
mysql中replace函數直接替換mysql數據庫中某字段中的特定字符串,不再需要自己寫函數去替換,用起來非常的方便。 mysql 替換函數replace()
replace
replace(str1, str2, str3): 在字串 str1 中,? str2 出??r,?⑵湟 str3 替代。
例子
代碼如下 復制代碼
說明:
table_name —— 表的名字
field_name —— 字段名
from_str —— 需要替換的字符串
to_str —— 替換成的字符串
例如:
mysql替換表的字段裡面內容,如例子:
代碼如下 復制代碼mysql> select id,type from items limit 10;
+--------+--------+
| id | type |
+--------+--------+
| 0001 | 780000 |
| 0002 | 780000 |
| 0003 | 780000 |
| 0004 | 780000 |
| 0005 | 780000 |
| 150419 | 780000 |
| 150420 | 780000 |
| 150421 | 780000 |
| 150422 | 780000 |
| 150423 | 780000 |
+--------+--------+
把type字段中的“78”改成“79” 用replace函數
sql如下:
代碼如下 復制代碼mysql> update items set type=replace(type,'79','78');
Query OK, 17536 rows affected (0.72 sec)
Rows matched: 17536 Changed: 17536 Warnings: 0
再查詢:
代碼如下 復制代碼mysql> select id,type from items limit 10;
+--------+--------+
| id | type | www.111cn.net
+--------+--------+
| 0001 | 790000 |
| 0002 | 790000 |
| 0003 | 790000 |
| 0004 | 790000 |
| 0005 | 790000 |
| 150419 | 790000 |
| 150420 | 790000 |
| 150421 | 790000 |
| 150422 | 790000 |
| 150423 | 790000 |
+--------+--------+
10 rows in set (0.00 sec)
由查詢結果到,數據已經更新成功
正則替換
locate:
LOCATE(substr,str)
POSITION(substr IN str)
返回子串 substr 在字符串 str 中第一次出現的位置。如果子串 substr 在 str 中不存在,返回值為 0:
substring
SUBSTR(str,pos,len): 由<str>中的第<pos>位置開始,選出接下去的<len>個字元。
首先描述一下,我遇到的問題:
以下是數據庫中的一個表mt2:
+----+------------------------------------------+
| id | name |
+----+------------------------------------------+
| 1 | sdfsf<contact>beijing</contact>sldjfsld |
| 2 | sdfsf<contact>shanghai</contact>sldjfsld |
| 3 | sdfsf<contact>jn</contact>sldjfsld |
| 4 | sdfsf<contact>qd</contact>sldjfsld |
+----+------------------------------------------+
遇到的要求是:將該表中<contact>到</contact>的內容刪除。
眾所周知,replace函數是不支持正則表達式的,所以只能采用其他的方法處理。
於是,我是使用了下面的sql語句:
Sql代碼
問題解決了。
結果:
+----+-------------------+
| id | name |
+----+-------------------+
| 1 | sdfsfactsldjfsld |
| 2 | sdfsfactsldjfsld |
| 3 | sdfsfactsldjfsld |
| 4 | sdfsfactsldjfsld |
+----+-------------------+