2012-03-31 13 views
16

存在しない I次の表があります。スプリットカンマ区切り文字列は - > 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 

が、私は後に数字を分割したいです第二カラム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 

答えて

27

MySQLにはCHARINDEX()関数が組み込まれていません。 LOCATE()はMySQLに相当します。

SUBSTRING_INDEX()を使用すると、これをより簡潔な方法にすることができます。このような何か(免責事項:テストされていないが):POS2余談として


用POS

SUBSTRING_INDEX(POS, ',', -1)ため

SUBSTRING_INDEX(POS, ',', 1)は、私はあなたが達成しようとしているもの誤解することができるが、それは次のようになりますあなたはUPDATE既存の行にしたいかもしれないが、INSERT新しいものはありませんか?ような何か:InStrまたは同じ構文について見つけます

UPDATE MyTable SET POS2 = SUBSTRING_INDEX(POS, ',', -1); 
UPDATE MyTable SET POS = SUBSTRING_INDEX(POS, ',', 1); 
+0

すごくうれしい! – madkitty

3

MySQLは、同様の機能を持っています。

関連する問題