请在下面找到我已设置的表格结构的链接以及我正在运行的查询。
CREATE TABLE phpbb_profile_fields_data
(`user_id` int, `pf_firstname` varchar(50),
`pf_lastname` varchar(100),`pf_workarea` varchar(255));
INSERT INTO phpbb_profile_fields_data
(`user_id`, `pf_firstname`, `pf_lastname`, `pf_workarea`)
VALUES
('90', 'Piotr', 'Linski', '1;2;3;5;7;'),
('91', 'Monica', 'Reemers', '1;4;7;'),
('92', 'Lex', 'Zeewen', '2;3;'),
('93', 'Adele', 'Gerven', '7;')
;
SELECT d.pf_firstname, d.pf_lastname, d.pf_workarea,
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(d.pf_workarea, '7;', 'Friesland, ') , '5;', 'Flevoland, ') , '4;', 'Gelderland, ') , '3;', 'Brabant, ') , '2;', 'Limburg, ') , '1;', 'Landelijk, ') AS result
FROM phpbb_profile_fields_data d
ORDER BY d.pf_lastname ASC
如果运行查询,您将看到对于每一行,由于某种原因,最后一个数字未转换为相应的值。 - 为什么是这样, - 还需要进行哪些修改才能将最后一个数字替换为相应的值?
答案 0 :(得分:0)
原因是你替换了例如'7;'与'Friesland'一样,当然最后没有分号的元素也不会被替换。
我认为这不是一个聪明的方法,因为如果你必须添加另一个工作区,你必须更改查询而不仅仅是数据。我会投票选择生成第二个表格,将数字映射到工作场所。然后你可以做一个简单的JOIN。