表ProjectAssignmentPaper 中的TypeOfContract字段存的值为“1,2,3,4,5”,数字1,2,3,4,5,对应的值为张三,李四、王五、张飞、项羽,如何查询并且当数字用逗号隔开时对应值也用逗号隔开
时间: 2024-03-01 19:53:50 浏览: 53
您可以使用 GROUP_CONCAT() 函数和 FIND_IN_SET() 函数来实现,例如:
```sql
SELECT
ProjectName,
GROUP_CONCAT(
CASE WHEN FIND_IN_SET('1', TypeOfContract) THEN '张三' ELSE NULL END,
CASE WHEN FIND_IN_SET('2', TypeOfContract) THEN ',李四' ELSE NULL END,
CASE WHEN FIND_IN_SET('3', TypeOfContract) THEN ',王五' ELSE NULL END,
CASE WHEN FIND_IN_SET('4', TypeOfContract) THEN ',张飞' ELSE NULL END,
CASE WHEN FIND_IN_SET('5', TypeOfContract) THEN ',项羽' ELSE NULL END
SEPARATOR ''
) AS ContractNames
FROM ProjectAssignmentPaper
GROUP BY ProjectName;
```
这将返回一个结果集,其中包含每个项目的名称和对应的 TypeOfContract 中数字对应的名称,数字和名称之间用逗号隔开。如果 TypeOfContract 中没有某个数字,则相应的名称将不会显示在结果中。
相关问题
表ProjectAssignmentPaper 中的TypeOfContract字段存的值为“1,2,3”,如何查询让TypeOfContract为1显示科研项目立项任务书,TypeOfContract为2显示合作开发合同,TypeOfContract为“1,2“显示””科研项目立项任务书,合作开发合同“”
你可以使用 MySQL 中的 CASE WHEN 语句来查询 TypeOfContract 字段对应的文本信息,例如:
```
SELECT
CASE
WHEN TypeOfContract = '1' THEN '科研项目立项任务书'
WHEN TypeOfContract = '2' THEN '合作开发合同'
WHEN TypeOfContract = '1,2' THEN '科研项目立项任务书,合作开发合同'
END AS ContractType
FROM ProjectAssignmentPaper;
```
这将在查询结果中创建一个名为 ContractType 的新字段,其中包含根据 TypeOfContract 值对应的文本信息。注意,这里将 TypeOfContract 字段的值作为字符串进行比较,因此在 CASE WHEN 语句中使用的值必须加上引号。
阅读全文