考虑MySQL中表格如下图所示,数据从csv文件导入,作者栏格式为 “ [国籍]作者名 ”,我希望将作者名与国籍分开显示。
此 database 名为 mybooklist。
此 table 名为 booklist 。
首先是将作者名字提取出来,需要提取方括号 " ] " 右边的所有字符。
SELECT substring_index(作者,"]",-1) FROM booklist;
得到结果为
然后是提取国籍,是 " [ " 右边以及 " ] " 左边的字符,需要嵌套一个substring_index,
SELECT substring_index(substring_index(作者,"]",1),"[",-1) FROM booklist;
得到的结果为
方便起见,创建新 table 名为 booklist_2 。
创建表格代码就不贴了。
可以用 MySQL Workbench 可视化操作,创建非常方便。
创建完表格后,就可以将原表格中的数据提取出来插入新表中,一一对应就好。
INSERT INTO booklist_2
SELECT
序号,
书名,
substring_index(作者,"]",-1),
substring_index(substring_index(作者,"[",-1),"]",1),
译者,
出版社,
出版日期,
ISBN,
总页码,
价格,
书籍所在书架,
添加时间
FROM booklist;
结果为
这里最主要的就是 substring_index 的使用。
基本的使用方法为:
substring_index( 字符串,"截取标的",-/+数字),这里的负号代表截取标的的右侧,正号(可以省略)代表截取左侧,数字代表从第几个字符开始截取,本文中就是从方括号的左侧或右侧第一个字符截取,所以用 -1 或 1 ,实际应用中可以根据自己需要选择截取的目标。
关于mysql字符串的截取还有很多应用方法,有大神总结,在站内多搜搜也就明白了。
——————