【问题标题】:Flexible search Query for stringset?字符串集的灵活搜索查询?
【发布时间】:2019-04-16 10:55:11
【问题描述】:

请找到以下查询:

表名:B

查询:从 {B} 中选择 *

ID  comp  
1   d,e,f 

我想检查 'f' 值是否存在于 comp 中,使用 SQL/灵活搜索查询。

这个场景可以写sql查询吗?

更新:

SELECT  DISTINCT {b:pk}  FROM {A AS a left join B as B on {a:ncode} = {b:ncode} and {a:qCode}  =  {b:qCode}}

WHERE 

{a:compID} IN ()

假设a:compID"f"

IN 运算符之后的子查询应该是什么才能满足我的要求?

【问题讨论】:

    标签: mysql sql hybris


    【解决方案1】:

    你可以在mysql中搜索字符串:

    //全搜索:

    SELECT * FROM A WHERE comp LIKE '%f%'
    

    //以f开头

    SELECT * FROM A WHERE comp LIKE '%f'
    

    // 以 f 结尾

    SELECT * FROM A WHERE comp LIKE 'f%'
    

    【讨论】:

      【解决方案2】:
      SELECT * FROM {B} where {comp} LIKE '%,f,%'
      

      【讨论】:

      • 虽然此代码可以解决 OP 的问题,但最好添加上下文,或解释为什么您的代码应该解决问题。通过这种方式,未来的访问者可以学习并将其应用于他们自己的问题。高质量的答案更有可能获得投票,而有竞争力的答案可以保持 SO 平台的高质量。
      【解决方案3】:

      这将起作用:

       SELECT FIND_IN_SET('f',(SELECT comp FROM t));
      

      Run this code on Fiddle

      如果你想检查是否存在,那么:

      SELECT case when FIND_IN_SET('f',(SELECT comp FROM t))=0 then'not present'
                else 'present' end from dual;
      

      【讨论】:

      • 以上查询不适用于我的情况,因为我使用的是 hybris 灵活搜索查询
      【解决方案4】:

      以 f 开头 LIKE 'f%'

      以 f 结尾 LIKE '%f'

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-11-29
        • 1970-01-01
        • 1970-01-01
        • 2017-09-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-06
        相关资源
        最近更新 更多