mysql - 分割逗号分隔的字符串 --> FUNCTION db.CHARINDEX 不存在

标签 mysql string function split

我需要将逗号分隔的字符串拆分为第二列 我有下表:

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

最佳答案

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

关于mysql - 分割逗号分隔的字符串 --> FUNCTION db.CHARINDEX 不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25286449/

相关文章:

MySQL通过触发器防止某一列的数据修改

php - 将表单插入数据库

php - 使用变量定义 PHP 函数

c# - 函数不返回反转数组

matlab - 跟踪函数在 MATLAB 中的文件夹/文件中被引用的次数?

mysql - 限制sql中统计的记录数

android - 使用 ODBC 和 ASP 将我的 Android 应用程序连接到 MySQL

c++ - 如何检查字符串是否只有字母

正则表达式 - 删除所有不包含字符串的行? - 崇高的文字

c++ - 通过命令行参数传递文件名与在代码中使用字符串文字