繁体   English   中英

如何在SQL中删除字符串

[英]How to remove a string in sql

在MySQL中,我有一个“学生”表,其中包含一个“ 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/zh-CN/string-functions.html#function_replace

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'不会出现在任何地方除了第一个位置以外的任何值。)

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

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

如果要更新数据库:

UPDATE Student SET StudentId = REPLACE(StudentId, 'S', '');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM