如何将字段中的最后一个数字更改为相应的值?

时间:2017-02-05 11:31:17

标签: mysql

请在下面找到我已设置的表格结构的链接以及我正在运行的查询。

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

Here you can try it online

如果运行查询,您将看到对于每一行,由于某种原因,最后一个数字未转换为相应的值。 - 为什么是这样, - 还需要进行哪些修改才能将最后一个数字替换为相应的值?

1 个答案:

答案 0 :(得分:0)

原因是你替换了例如'7;'与'Friesland'一样,当然最后没有分号的元素也不会被替换。

我认为这不是一个聪明的方法,因为如果你必须添加另一个工作区,你必须更改查询而不仅仅是数据。我会投票选择生成第二个表格,将数字映射到工作场所。然后你可以做一个简单的JOIN。