mySQL在SELECT查询中将整数转换为文本

cho*_*wwy 0 mysql

我想在mySQL select查询中将整数转换为文本.这是表格的样子:

Languages
--------
1,2,3
Run Code Online (Sandbox Code Playgroud)

我想将每个整数转换为一种语言(例如,1 =>英语,2 =>法语等)

我一直在阅读mySQL中的CONVERT和CAST函数,但它们似乎主要关注将各种数据类型转换为整数.而且我找不到任何与我存储数据的特定方式有关的事情(在一个字段中有多个数字).

如何在mySQL查询中将整数转换为文本?

UPDATE

这是我的mySQL查询:

SELECT u.id, ulp.userid, ulp.languages, ll.id, ll.language_detail
FROM users AS u
JOIN user_language_profile AS ulp ON (ulp.userid = u.id)
JOIN language_detail AS ll ON (ulp.languages = ll.id)
Run Code Online (Sandbox Code Playgroud)

egg*_*yal 5

使用:

虽然,如果可能的话,我会想要使用JOIN查找表(如@TamTER所说)或将列的数据类型更改为ENUM('English','French',...).


UPDATE

从您的评论中,现在看来每个字段都包含一组(甚至可能使用SET数据类型?)语言,并且您想用字符串替换数值?

首先,阅读Bill Karwin的优秀答案 "将分隔列表存储在数据库列中真的那么糟糕吗?".

在这种情况下,我建议您对数据库进行标准化:创建一个新的语言实体表,其中每个记录将现有表中实体的PK与单个语言相关联.然后,您可以使用聚合SELECT查询(加入该新表)GROUP_CONCAT以获取所需的语言名称列表.

如果没有这样的规范化,你唯一的选择是进行基于字符串的搜索和替换(这不会特别有效); 例如:

SELECT CONCAT_WS(',',
  IF(FIND_IN_SET('1', Languages), 'English', NULL),
  IF(FIND_IN_SET('2', Languages), 'French' , NULL),
  -- etc.
)
FROM table_name
Run Code Online (Sandbox Code Playgroud)