我有一个名为'Department‘的列,它有一个文本字符串,如下所示:
N 1,社会学/n 2,遗传学/n 3,数学..etc。
我正在尝试使用基于数字1、2、3等的LIKE或If、Then语句提取部门名称。我对MySQL比较陌生,因此如果有任何反馈,将不胜感激。
发布于 2014-11-11 08:30:25
我不太确定我是否了解您的源列数据的确切性质。
如果您说示例中的一列包含由斜杠分隔的部门列表,并且您希望提取给定一个已知数字的单个部门,则可以这样做
select trim(substring_index(substring_index(column_name,'n 2,', -1),'/',1)) from mytable where <your criteria>;例如。
> select trim(substring_index(substring_index( 'n 1, Sociology / n 2, Genetics / n 3, Math','n 2,',-1),'/',1)) as 'Department';
+------------+
| Department |
+------------+
| Genetics |
+------------+
1 row in set (0.00 sec)我个人尽量避免在mysql本身中解析blobs,并委托该代码,但如果出于任何原因,这可能会有所帮助(等待我对需求的正确解释)。
解析像这样的“半结构化”数据的最大问题是,当您的一个分隔符被用作未转义的文字值时,无论是在SQL中还是在应用程序级别。例如,斜杠用作分隔符和实际部门名称
https://stackoverflow.com/questions/26855347
复制相似问题