繁体   English   中英

如何从mysql的字符串中选择一个确切的子字符串而不是另一个?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM