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()函数,实质上是为了考察对该函数的理解。
该函数的用法请参见这里:
至此,给出本题在使用了REPLACE()函数之后的解:

UPDATE titles_test
SET emp_no = REPLACE(emp_no, 10001, 10005) # 存在从int到string的隐式转换
WHERE id = 5;

相关