カンマ区切りの文字列を2番目の列に分割する必要があります。次の表があります。
CL1 POS POS2 LENGHT ALLELE
1 3015108,3015109 5 A
2 3015110,3015200 10 B
3 3015200,3015300 15 C
4 3015450,3015500 20 D
5 3015600,3015700 15 E
カンマの後の数値を2番目の列POS2に分割したいので、
CL1 POS POS2 LENGHT ALLELE
1 3015108 3015109 5 A
2 3015110 3015200 10 B
3 3015200 3015300 15 C
4 3015450 3015500 20 D
5 3015600 3015700 15 E
だから私は以下を問い合わせました:
INSERT INTO MyTable (POS2)
SELECT RIGHT(POS, CHARINDEX(',', POS) + 1 ) FROM MyTable ;
It returns an error :
ERROR 1305 (42000): FUNCTION test.CHARINDEX does not exist
MySQLにはCHARINDEX()
関数が組み込まれていません。 LOCATE()
は、MySQLと同等です。
SUBSTRING_INDEX()
を使用すると、これをより簡単に行うことができます。このようなもの(免責事項:未テスト):
SUBSTRING_INDEX(POS, ',', 1)
for POS
SUBSTRING_INDEX(POS, ',', -1)
for POS2
余談ですが、私はあなたが達成しようとしていることを誤解しているかもしれませんが、UPDATE
新しい行ではなくINSERT
既存の行が必要なように見えますか?何かのようなもの:
UPDATE MyTable SET POS2 = SUBSTRING_INDEX(POS, ',', -1);
UPDATE MyTable SET POS = SUBSTRING_INDEX(POS, ',', 1);
MySQL
にも同様の機能があります:InStr
または同じ構文Locateの場合。