SQL语句replace怎么替换?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL语句replace怎么替换?相关的知识,希望对你有一定的参考价值。

参考技术A Replace("字符串","要被替代的字符串","替代后的字符串")
1、sql
replace
into用法详细说明REPLACE的运行与INSERT很相似。只有一点例外,假如表中的一个旧记录与一个用于PRIMARYKEY或一个UNIQUE索引的新记录具有相同的值,则在新记录被插入之前,旧记录被删除。
2、注意,除非表有一个PRIMARY
KEY或UNIQUE索引,否则,使用一个REPLACE语句没有意义。该语句会与INSERT相同,因为没有索引被用于确定是否新行复制了其它的行。
3、所有列的值均取自在REPLACE语句中被指定的值。所有缺失的列被设置为各自的默认值,这和INSERT一样。您不能从当前行中引用值,也不能在新行中使用值。如果您使用一个例如“SET
col_name
=
col_name
+
1”的赋值,则对位于右侧的列名称的引用会被作DEFAULT(col_name)处理。因此,该赋值相当于SET
col_name
=
DEFAULT(col_name)
+
1。为了能够使用REPLACE,必须同时拥有表的INSERT和DELETE权限。

MYSQL语句中有空格如何解决?

UPDATE cdb_posts SET message=REPLACE(message,'123 456','1234') where tid=123456;

这个替换语句中需要替换的内容有空格,请问该怎么处理呢?
但事实上我执行这个语句了,123 456并没有替换成1234

1、首先replace函数可以做到替换【'123 456'】为【'1234'】,测试log如下:

mysql> select replace('123 456','123 456','1234');
+-------------------------------------+
| replace('123 456','123 456','1234') |
+-------------------------------------+
| 1234 |
+-------------------------------------+
1 row in set (0.05 sec)

2、如果你想去掉【message】中的所有空格的话
【replace(message,' ','')】就可以的。测试log如下:

mysql> select replace('1 2 3 4 5 6',' ','');
+-------------------------------+
| replace('1 2 3 4 5 6',' ','') |
+-------------------------------+
| 123456 |
+-------------------------------+
1 row in set (0.00 sec)

3、所以你的sql改成下面这样就可以了应该:
UPDATE cdb_posts SET message=REPLACE(message,' ','') where tid=123456;

4、改完了记住commit,使改正永久话。

---
以上,希望对你有所帮助。
参考技术A 你的这个语句能够执行,能够把"123 456"替换为"1234",包括空格一起被替换掉。

莫非你还有其它要求吗?

参考资料: 

参考技术B UPDATE cdb_posts SET message=REPLACE(message,'123 456','1234') where replace(tid,' ','')=123456 参考技术C select * from cdb_posts where tid=123456

看看查询结果中的message值

以上是关于SQL语句replace怎么替换?的主要内容,如果未能解决你的问题,请参考以下文章

SQL语句replace替换问题

MYSQL语句中有空格如何解决?

sql中replace语句如何做模糊匹配并删除

replace MYSQL字符替换函数sql语句分享(正则判断)

sql语句:怎么把一列表里面包含某个字符都改成另外一个字符,就像word里面的替换功能一样的语句

SQL REPLACE 语句替换部分数字不是全部