2012-03-31 27 views
16

tôi cần phải chia dấu phẩy phân cách chuỗi thành một cột thứ hai Tôi có bảng sau:Chia dấu phẩy phân cách chuỗi -> CHỨC NĂNG db.CHARINDEX không tồn tại

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 

Tôi muốn chia số sau dấu phẩy vào một cột thứ hai POS2 Vì vậy, nó nên thích rằng

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 

Vì vậy, tôi đã truy vấn như sau:

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 

Trả lời

27

MySQL không có chức năng được xây dựng trong CHARINDEX(). LOCATE() sẽ là tương đương với MySQL.

Sử dụng SUBSTRING_INDEX() có thể là cách ngắn gọn hơn để thực hiện việc này. Một cái gì đó như thế này (từ chối trách nhiệm: chưa được kiểm tra):

SUBSTRING_INDEX(POS, ',', 1) cho POS

SUBSTRING_INDEX(POS, ',', -1) cho POS2


Là một sang một bên, tôi có thể bị hiểu lầm những gì bạn đang cố gắng để hoàn thành, nhưng có vẻ như bạn có thể muốn UPDATE hàng hiện tại, không phải INSERT số mới? Một cái gì đó như:

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

THANKS AWESOME! – madkitty

3

MySQL không có một chức năng tương tự: InStr hoặc cho cùng một cú pháp Xác định vị trí.

Các vấn đề liên quan