我有一个名为'Department'的列,其中包含一串文字,如下所示:
n 1,Sociology / n 2,Genetics / n 3,Math ..等。
我正在尝试使用LIKE或If,Then语句根据数字1,2,3等提取部门名称。我对MySQL比较新,所以任何反馈都会受到赞赏。
答案 0 :(得分:0)
我不确定我是否了解源列数据的确切性质。
如果您说您的示例中的单个列包含由斜杠分隔的部门列表,并且您希望在给定已知编号的情况下提取单个部门,则可以执行类似此操作的
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本身中解析blob并委托代码,但是如果出于任何理由你需要这可能有帮助(等待我对需求的正确解释)。
解析像这样的“半结构化”数据的最大问题是,无论是在SQL还是应用程序级别,都会将其中一个分隔符用作未转义的文字值。例如斜杠用作分隔符和实际部门名称