一个sql的update REPLACE的问题

假设有一张表 ttable
id    domain1    domain2
1     abc.com    test.abc.com
2     eee.com    a.eee.com

update ttable set domain2=REPLACE(domain2,domain1,'test1.com'),domain1='test1.com'  where

id=1

update ttable set domain1='test1.com', domain2=REPLACE(domain2,domain1,'test1.com') where

id=2

将会有什么样的结果呢?
id    domain1    domain2
1     test1.com  test.test1.com
2     test1.com  a.eee.com

id=2的记录为什么REPLACE无效了呢? 那是因为domain1在REPLACE之前, 已经由eee.com更新成了

test1.com, 所以REPLACE就无效了.

SQL 中的 `REPLACE` 函数用于替换字符串中的特定子字符串,其基本语法为 `REPLACE(string, from, to)`,其中 `string` 是要进行替换操作的原始字符串,`from` 是需要被替换的子字符串,而 `to` 是用来替换的新子字符串 [^2]。这意味着在 `string` 中所有出现的 `from` 子字符串都会被 `to` 替换 [^2]。 例如,如果有一个名为 `Course` 的表,并且想要将课程名称(`Title`)字段中所有的 "SEMINAR" 替换成 "DISCUSSION",可以使用如下的 SQL 更新语句: ```sql UPDATE Course SET Title = REPLACE(Title, 'SEMINAR', 'DISCUSSION'); ``` 此语句会更新表中的 `Title` 字段,将其中的 "SEMINAR" 替换为 "DISCUSSION" [^1]。 另外,如果想要在查询结果中显示替换后的值而不实际修改数据库中的数据,可以在 SELECT 语句中使用 REPLACE 函数。例如,假设有一个名为 `test_tb` 的表,并且想要在查询结果中将 `address` 字段里的 “区” 替换为 “呕”,可以使用如下查询: ```sql SELECT *, REPLACE(address, '区', '呕') AS rep FROM test_tb; ``` 这条命令会在查询结果中显示一个额外的列 `rep`,其中包含了替换后的地址信息 [^3]。 需要注意的是,如果 `REPLACE` 函数中的任何一个参数为 NULL,则此函数返回 NULL [^4]。此外,`search-string` 不应该是空字符串,否则原始字符串将按原样返回 。 ### 参数说明 - `string_expression`:这是要搜索的字符串表达式,可以是字符或二进制数据类型。 - `string_pattern`:这是要查找的子字符串,同样可以是字符或二进制数据类型,但不能是空字符串 ('')。 - `string_replacement`:这是用来替换 `string_pattern` 的字符串,也可以是字符或二进制数据类型 [^5]。 当 `string_replacement` 是空字符串时,所有出现的 `string_pattern` 都会被删除 [^4]。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值