[英]How do I select one exact substring but not another from a string in mysql?
我将以下条目存储在mysql的属性中:
博FA亚洲论坛
a:11:{i:0; s:6:“ BFA.AD”; i:1; s:11:“ BFA.AD.COPY”; i:2; s:6:“ BFA.AE”; i :3; s:6:“ BFA.TC”; i:4; s:6:“ BFA.FA”; i:5; s:6:“ BFA.GC”; i:6; s:6:“ BFA.IL“; i:7; s:6:” BFA.IN“; i:8; s:6:” BFA.PH“; i:9; s:6:” BFA.PR“; i:10 ; s:6:“ BFA.TR”;}
BFA广告复制
BFA.TR
我正在尝试编写一个满足以下条件的when语句:记录包含BFA.AD或正好是BFA.AD时,则为1,否则为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中似乎不起作用。
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',
要么
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',
我想我找到了一种适合这种特定情况的解决方案:
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
到目前为止,它似乎正在工作。 谢谢大家的帮助,当您让我思考尚未尝试的其他选项时。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.