2013-02-11 66 views
0

我有一个MySQL 5数据库表字段mediaset('audio','video','photo') 我需要做的是在单个SELECT语句前缀它的值与一些自定义字符串和空间后,如果任何值存在。例如:MySQL前缀SET字段值与自定义字符串

audio,video变得mediaaudio mediavideo

photo变得mediaphoto

数据的细节不需要对应值,以进行外部关系表,所以set足够用于当前任务。我需要在搜索结果中加上前缀来唯一标识它们。

真实的例子:

id media

1 audio,video

2 audio

3 video

4 photo,video

5

预期结果:

id media

1 mediaaudio mediavideo

2 mediaaudio

3 mediavideo

4 mediaphoto mediavideo

5

+0

我不明白。使用'CONCAT'? – Kermit 2013-02-11 15:41:05

+1

是否用逗号分隔?我想如果你有一个枚举字段,每列只能有一个值。 – 2013-02-11 15:41:23

+0

哦,对不起,我的错误。这是一个SET列 – 2013-02-11 15:42:15

回答

1

这里有INSTRCONCATREPLACELENGTH做到这一点的一种方法:

SELECT ID, 
    CASE WHEN INSTR(YourField, ',') > 0 
    THEN CONCAT('media', REPLACE(YourField, ',', ' media')) 
    WHEN LENGTH(YourField) > 0 
    THEN CONCAT('media', YourField) 
    ELSE '' 
    END media 
FROM YourTable 

而且Fiddle

祝你好运。

+0

非常好!这样可行。 – 2013-02-11 17:07:21