MySQLには、次のような「StudnetId」列を含む「Student」テーブルがあります。
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', '')
列に格納されている値から文字を実際に削除することはできません。列にまったく新しい値を割り当てる必要があります。これは、現在保存されている値を参照する式を使用して導出できます。
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」であることを保証できる場合)を前提として、同じ結果を達成します。関数は、先頭の文字が「S」ではない場合を処理しREPLACE
ますが、先頭の「S」よりも多くを削除する可能性があります(文字「S」がどこにも表示されないという何らかの保証がない場合)最初の位置以外の値。)
dbの行に影響を与えないことだけを表示したい場合は、以下を使用してください。
SELECT REPLACE(StudentId, 'S', '') FROM Student;
dbを更新する場合:
UPDATE Student SET StudentId = REPLACE(StudentId, 'S', '');