SQL44 将id=5以及emp_no=10001的行数据替换成id=5以及emp_no=10005
本题链接
表结构如下所示。
+----+--------+-----------------+------------+------------+
| id | emp_no | title | from_date | to_date |
+----+--------+-----------------+------------+------------+
| 1 | 10001 | Senior Engineer | 1986-06-26 | 9999-01-01 |
| 2 | 10002 | Staff | 1996-08-03 | 9999-01-01 |
| 3 | 10003 | Senior Engineer | 1995-12-03 | 9999-01-01 |
| 4 | 10004 | Senior Engineer | 1995-12-03 | 9999-01-01 |
| 5 | 10001 | Senior Engineer | 1986-06-26 | 9999-01-01 |
| 6 | 10002 | Staff | 1996-08-03 | 9999-01-01 |
| 7 | 10003 | Senior Engineer | 1995-12-03 | 9999-01-01 |
+----+--------+-----------------+------------+------------+
如果仅仅是更新数据,只需使用一条UPDATE语句即可:
UPDATE titles_test
SET emp_no = '10005'
WHERE id = 5;
但本题限定必须使用REPLACE()函数,实质上是为了考察对该函数的理解。
该函数的用法请参见这里:SQL51 查找字符串中逗号出现的次数
至此,给出本题在使用了REPLACE()函数之后的解:
UPDATE titles_test
SET emp_no = REPLACE(emp_no, 10001, 10005) # 存在从int到string的隐式转换
WHERE id = 5;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通