私は 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 でこの種の区切り文字列から選択するより良い方法はありますか?