Разделительная строка с разделителями-запятыми → FUNCTION db.CHARINDEX не существует
Мне нужно разделить строку с разделителями-запятыми на второй столбец
У меня есть следующая таблица:
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
Ответы
Ответ 1
У MySQL нет встроенной функции CHARINDEX()
. 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);
Ответ 2
MySQL
имеет аналогичную функцию: InStr
или для того же синтаксиса Locate.