0

在 MySQL 中,我有一个“Student”表,其中包含一个“StudnetId”列,如下所示:

StudentId

S1
S4
S3
S5
S1
S2
S3

使用 SQL,如何根据字符的索引删除字符。

具体来说,我需要在更新表格时删除此列中每一行的“S”。

4

4 回答 4

3

这将删除该列中每一行的第一个字符。

UPDATE Student SET StudentId = SUBSTR(StudentId, 2);
于 2012-08-23T21:19:49.297 回答
3

http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_replace

UPDATE Student SET StudentId = REPLACE(StudentId, 'S', '')
于 2012-08-23T21:21:40.607 回答
0

如果您只想显示不影响 db 中的行,请在下面使用;

SELECT REPLACE(StudentId, 'S', '') FROM Student;

如果要更新数据库:

UPDATE Student SET StudentId = REPLACE(StudentId, 'S', '');
于 2012-08-23T21:26:44.057 回答
0

您不能真正从存储在列中的值中删除字符。您必须为该列分配一个全新的值,该值可以使用引用当前存储值的表达式派生。

下面是一个语句示例,该语句将从 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”不会出现在除第一个位置外的任何值。)

于 2012-08-23T21:24:31.990 回答