在Mysql中,不使用字符串函数将行转换为具有唯一标题的列

在Mysql中,不使用字符串函数将行转换为具有唯一标题的列,mysql,Mysql,如何从一个记录包含多个值的列中获取I数据,以显示在具有自定义标题的新列中,而不使用MYSQL中的字符串函数。 下面是我使用多个联接提取的表的子集。 产品类别 -------- | ------------ MSI60000 |太阳镜 MSI60000 |最小编码 MSI60001 |玻璃 MSI60001 |最小编码 MSI60002 |太阳镜 MSI60002 |短编码 MSI60003 |护目镜 MSI60003 |长编码 MSI60004 |护目镜 MSI60004 |短码 我希望从

如何从一个记录包含多个值的列中获取I数据,以显示在具有自定义标题的新列中,而不使用MYSQL中的字符串函数。

下面是我使用多个联接提取的表的子集。

产品类别 -------- | ------------ MSI60000 |太阳镜 MSI60000 |最小编码 MSI60001 |玻璃 MSI60001 |最小编码 MSI60002 |太阳镜 MSI60002 |短编码 MSI60003 |护目镜 MSI60003 |长编码 MSI60004 |护目镜 MSI60004 |短码 我希望从上面的表格中实现这一点

Product | Type | Coding -------- | ----------- | -------------- MSI60000 | Sunglasses | Minimal Coding MSI60001 | Glasses | Minimal Coding MSI60002 | Sunglasses | Short Coding MSI60003 | Goggles | Long Coding MSI60004 | Goggles | Shortcoded 产品|类型|编码 -------- | ----------- | -------------- MSI60000 |太阳镜|最小编码 MSI60001 |玻璃|最小编码 MSI60002 |太阳镜|短编码 MSI60003 |护目镜|长编码 MSI60004 |护目镜|短码 给出的解决方案帮助了我,但是它使用了我不能使用的字符串函数。
您可以使用此查询-

SELECT
  Product,
  MAX(IF(LOCATE('Coding', Category) = 0, Category, NULL)) AS Type,
  MAX(IF(LOCATE('Coding', Category) > 0, Category, NULL)) AS Coding
FROM
  tbl
GROUP BY
  Product;


…但是有定位函数。

字符串函数有什么问题?我使用的系统不允许我使用字符串函数。谢谢!我不能在这里针对特定的字符串,因为列可能包含不可预测的字符串。在末尾添加了另一行。无法理解哪个是类型,哪个是为值编码的,例如
Goggles | Shortcoded
。仅用于比较字符串。在某些情况下,可以自动化透视-
SELECT
  Product,
  MAX(IF(LOCATE('Coding', Category) = 0, Category, NULL)) AS Type,
  MAX(IF(LOCATE('Coding', Category) > 0, Category, NULL)) AS Coding
FROM
  tbl
GROUP BY
  Product;
MSI60000    Sunglasses      Minimal Coding
MSI60001    Glasses         Minimal Coding
MSI60002    Sunglasses      Short Coding
MSI60003    Goggles         Long Coding