web-dev-qa-db-ja.com

カンマ区切りの文字列を分割-> FUNCTION db.CHARINDEXは存在しません

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

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);
31
Wiseguy

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

3
bill