我正在使用 dotProject(开源项目管理工具)并且需要为我自己的目的做一些自定义 sql 选择。
select u.user_username,
p.project_name,
p.project_start_date,
p.project_end_date,
SUBSTRING(sysval_value,LOCATE(CONCAT(p.project_status,'|'),sysval_value)+2,LOCATE('\n',sysval_value,LOCATE(CONCAT(p.project_status,'|'),sysval_value))-LOCATE(CONCAT(p.project_status,'|'),sysval_value)-2) as project_status
from project_contacts pc
left join users u on pc.contact_id = u.user_id
left join sysvals s on s.sysval_title='ProjectStatus'
left join projects p on p.project_id=pc.project_id
请注意我不得不从 sysvals 表中选择 ProjectStatus 的讨厌方式。
ProjectStatus 的 sysval_value 如下所示:
0|Not Defined/n1|Proposed/n2|In Planning/n3|In Progress/n4|On Hold/n5|Complete/n6|Template/n7|Archived
不知道为什么会这样,我本来希望有一个带有主键和描述的状态表(也许只是为了消除项目中的表数量)。
有没有更好的方法从 MySQL 中的这种分隔字符串中进行选择?