21

カンマ区切りの文字列を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
4

2 に答える 2

39

CHARINDEX()MySQLには組み込み関数がありません。LOCATE()MySQLと同等になります。

を使用SUBSTRING_INDEX()することは、これを行うためのより簡潔な方法かもしれません。このようなもの(免責事項:テストされていません):

SUBSTRING_INDEX(POS, ',', 1)POS用

SUBSTRING_INDEX(POS, ',', -1)POS2の場合


余談ですが、私はあなたが達成しようとしていることを誤解しているかもしれませんが、新しいUPDATE行ではなく、既存の行を望んでいるように見えますINSERTか?何かのようなもの:

UPDATE MyTable SET POS2 = SUBSTRING_INDEX(POS, ',', -1);
UPDATE MyTable SET POS = SUBSTRING_INDEX(POS, ',', 1);
于 2012-03-31T05:03:25.690 に答える
4

MySQL同様の機能があります:InStrまたは同じ構文の場合はLocate。

于 2012-06-17T16:22:22.193 に答える