我在mysql的属性中存储了以下条目:
BFA.AD
一个:11:{I:0; S:6:" BFA.AD&#34 ;; I:1; S:11:" BFA.AD.COPY&#34 ;; I: 2; S:6:" BFA.AE&#34 ;; I:3; S:6:" BFA.TC&#34 ;; I:4; S:6:" BFA。 FA&#34 ;; I:5; S:6:" BFA.GC&#34 ;; I:6; S:6:" BFA.IL&#34 ;; I:7; S:6 :" BFA.IN&#34 ;; I:8; S:6:" BFA.PH&#34 ;; I:9; S:6:" BFA.PR&#34 ;; I:10; S:6:" BFA.TR&#34 ;;}
BFA.AD.COPY
BFA.TR
我正在尝试编写符合以下条件的语句: 当记录包含BFA.AD或正好是BFA.AD时,则其他为0。
因此,使用上面列出的四个记录,结果应该是1,1,0和0。
我试过了:
case when (select m.meta_value from `ccsadm_frm_item_metas` m where m.item_id = i.id and m.field_id = 1308) like '%BFA.AD%' then 1 else 0 end as 'BFA.AD',
将BFA.AD和BFA.AD.COPY标记为1.我尝试使用正则表达式["]\bBFA.AD\b["]
,但这似乎不适用于MySQL。
答案 0 :(得分:0)
case when (select m.meta_value
from `ccsadm_frm_item_metas` m
where m.item_id = i.id
and m.field_id = 1308)
like 'BFA.AD' then 1 else 0
end as 'BFA_Type',
OR
case when (select m.meta_value
from `ccsadm_frm_item_metas` m
where m.item_id = i.id
and m.field_id = 1308)
like 'BFA.AD' then 1 else 0
end as 'BFA.AD',
case when (select m.meta_value
from `ccsadm_frm_item_metas` m
where m.item_id = i.id
and m.field_id = 1308)
like 'BFA.AD.COPY' then 1 else 0
end as 'BFA.AD.COPY',
答案 1 :(得分:0)
我认为我找到了一个适用于我在这个特定情况下所需要的解决方案:
case when (select i.form_id = 193) then case when (select m.meta_value from `ccsadm_frm_item_metas` m where m.item_id = i.id and m.field_id = 1308) regexp 'BFA.AD["]' or (select m.meta_value from `ccsadm_frm_item_metas` m where m.item_id = i.id and m.field_id = 1308) = 'BFA.AD' then 1 else 0 end
所以,到目前为止,它似乎正在发挥作用。感谢大家的帮助,因为你让我想到了其他一些我还没有尝试的选择。