如何编写SQL语句替换blist表serial_no字段的前4位字符
场景1:仅查询替换,不修改原表数据
根据你使用的数据库不同,可选对应兼容语法:
- 全数据库通用写法(适用于serial_no固定替换前4位的场景):
SELECT CONCAT('xyz', SUBSTRING(serial_no, 5)) AS new_serial_no, city FROM blist;
- MySQL 专属简化写法:
SELECT CONCAT('xyz', RIGHT(serial_no, LENGTH(serial_no) - 4)) AS new_serial_no, city FROM blist;
- SQL Server 专属写法:
SELECT 'xyz' + SUBSTRING(serial_no, 5, LEN(serial_no) - 4) AS new_serial_no, city FROM blist;
- Oracle 专属写法:
SELECT 'xyz' || SUBSTR(serial_no, 5) AS new_serial_no, city FROM blist;
场景2:修改原表存储的serial_no字段值
注意执行前建议先执行场景1的查询验证替换结果,或提前备份数据避免误操作:
UPDATE blist SET serial_no = CONCAT('xyz', SUBSTRING(serial_no, 5));
如果仅需要替换前缀为abcd的行,避免误伤其他前缀的数据,可增加WHERE过滤条件:
UPDATE blist SET serial_no = CONCAT('xyz', SUBSTRING(serial_no, 5)) WHERE serial_no LIKE 'abcd%';
内容的提问来源于stack exchange,提问作者Amit
相关产品推荐
相关产品推荐

