在 MySQL 中,我有一个“Student”表,其中包含一个“StudnetId”列,如下所示:
StudentId
S1
S4
S3
S5
S1
S2
S3
使用 SQL,如何根据字符的索引删除字符。
具体来说,我需要在更新表格时删除此列中每一行的“S”。
这将删除该列中每一行的第一个字符。
UPDATE Student SET StudentId = SUBSTR(StudentId, 2);
见http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_replace
UPDATE Student SET StudentId = REPLACE(StudentId, 'S', '')
如果您只想显示不影响 db 中的行,请在下面使用;
SELECT REPLACE(StudentId, 'S', '') FROM Student;
如果要更新数据库:
UPDATE Student SET StudentId = REPLACE(StudentId, 'S', '');
您不能真正从存储在列中的值中删除字符。您必须为该列分配一个全新的值,该值可以使用引用当前存储值的表达式派生。
下面是一个语句示例,该语句将从 StudentId 列中“删除”前导“S”字符:
UPDATE `Student`
SET `StudentId`
= IF(SUBSTR(`StudentId`,1,1)='S',SUBSTR(`StudentId`,2),`StudentId`)
请注意,如果 StudentId 的第一个字符不是“S”,则该值不会更改。同样,此语句将获得相同的结果:
UPDATE `Student`
SET `StudentId` = SUBSTR(`StudentId`,2)
WHERE SUBSTR(`StudentId`,1,1)='S'
其他解决方案(不检查第一个字符是否为“S”)将获得相同的结果,给定数据的特定条件(例如,如果我们可以保证每个值的第一个字符是“S”。使用一个REPLACE
函数处理前导字符不是“S”的情况,但它可能会删除比前导“S”更多的内容(如果我们没有某种保证字符“S”不会出现在除第一个位置外的任何值。)