2012-03-31 21 views
16

yok Aşağıdaki tablo var:Bölünmüş virgülle ayrılmış dize -> İŞLEVİ db.CHARINDEX ben ikinci sütunlar halinde virgülle ayrılmış dize bölmek gerekir

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 

ben sonra sayıları bölmek istediğiniz

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 
: ikinci sütuna POS2 içine virgül yüzden şu

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 

Yani sorgulanan ettik isterim

cevap

27

MySQL'in CHARINDEX() yerleşik bir işlevi yok. LOCATE(), MySQL eşdeğeri olacaktır.

SUBSTRING_INDEX() kullanımı bunu yapmanın daha özlü bir yolu olabilir. Böyle bir şey (reddi: denenmemiş): POS2 bir kenara olarak


için POS

SUBSTRING_INDEX(POS, ',', -1) için

SUBSTRING_INDEX(POS, ',', 1), sana başarmak istediğiniz şeyi yanlış anlama olabilir, ancak benziyor UPDATE var olan satırlara INSERT yenilerini eklemek isteyebilirsiniz? gibi bir şey: InStr veya aynı sözdizimi için bulun:

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

WOW AWESOME THANKS! – madkitty

3

MySQL benzer bir işlevi var.

İlgili konular