【问题标题】:Match by char length in a SELECT statement在 SELECT 语句中按字符长度匹配
【发布时间】:2015-09-18 15:43:47
【问题描述】:

我有一个 SELECT 语句。我想知道是否可以在 SELECT 语句中按字符长度匹配?所以,例如。如果一个词的字符长度为 3 或更少,并且如果它与该词匹配,则将被视为 1 个匹配。如果一个单词的字符长度超过 3,并且如果它匹配该单词,它将被计为 2 个匹配项。这可能吗?

SELECT colName, 
( colName LIKE  '% 22 %' ) + 
( colName LIKE  '% 333 %' ) + 
( colName LIKE  '% 4444 %' ) as matches
FROM tableName
HAVING matches > 0 
AND matches = (select max(
( colName LIKE  '% 22 %' ) + 
( colName LIKE  '% 333 %' ) + 
( colName LIKE  '% 4444 %' )
) from tableName) limit 30

示例:

22 = 1 match
333 = 1 match
4444 = 2 matches

【问题讨论】:

    标签: php mysql regex


    【解决方案1】:

    使用IFCASE

    SELECT colName,
        (colName LIKE '% 22 %') +
        (colName LIKE '% 333 %') +
        IF(colName LIKE '% 4444 %', 2, 0) AS matches
    

    你也可以使用乘法:

    SELECT colName,
        (colName LIKE '% 22 %') +
        (colName LIKE '% 333 %') +
        2 * (colName LIKE '% 4444 %') AS matches
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-02
      • 1970-01-01
      • 2015-12-22
      • 2013-09-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多