SQL Server如何删除所有记录特定列中斜杠及前缀内容?
解决方案:移除Action字段中斜杠前缀部分
嘿,这个需求很容易实现,我给你整理了几种主流数据库下的操作方法,你可以根据自己使用的数据库来选择:
1. MySQL/MariaDB 版本
用SUBSTRING_INDEX函数可以直接取最后一个斜杠后面的内容,非常方便:
-- 先验证修改结果(推荐先执行这个确认) SELECT Id, Action, SUBSTRING_INDEX(Action, '/', -1) AS Modified_Action FROM your_table_name WHERE Action LIKE '%/%'; -- 确认无误后执行更新 UPDATE your_table_name SET Action = SUBSTRING_INDEX(Action, '/', -1) WHERE Action LIKE '%/%';
说明:SUBSTRING_INDEX第三个参数传-1表示取最后一个分隔符(这里是/)右侧的内容,WHERE条件确保只处理包含斜杠的记录,不会影响像GetUser这种没有斜杠的条目。
2. PostgreSQL 版本
如果是单斜杠的情况,用split_part就够;如果要兼容多斜杠的场景(比如a/b/c要改成c),推荐用反转字符串的方法:
-- 验证结果 SELECT Id, Action, reverse(split_part(reverse(Action), '/', 1)) AS Modified_Action FROM your_table_name WHERE Action LIKE '%/%'; -- 执行更新 UPDATE your_table_name SET Action = reverse(split_part(reverse(Action), '/', 1)) WHERE Action LIKE '%/%';
说明:先反转字符串,取第一个斜杠前的内容,再反转回来,就能得到最后一个斜杠右侧的部分,不管有多少个斜杠都适用。
3. SQL Server 版本
用REVERSE和CHARINDEX组合来定位最后一个斜杠的位置:
-- 验证结果 SELECT Id, Action, REVERSE(SUBSTRING(REVERSE(Action), 1, CHARINDEX('/', REVERSE(Action)) - 1)) AS Modified_Action FROM your_table_name WHERE Action LIKE '%/%'; -- 执行更新 UPDATE your_table_name SET Action = REVERSE(SUBSTRING(REVERSE(Action), 1, CHARINDEX('/', REVERSE(Action)) - 1)) WHERE Action LIKE '%/%';
重要提醒
执行更新操作前,一定要先运行SELECT语句验证修改后的结果是否符合预期,或者先备份表数据,避免误操作导致数据丢失哦!
内容的提问来源于stack exchange,提问作者So_oP
相关产品推荐
相关产品推荐

