Mysql:搜索一个子字符串并返回其右边最高的一个子字符串

Mysql:搜索一个子字符串并返回其右边最高的一个子字符串,mysql,Mysql,我需要在mysql字段中搜索一个字符串以查找子字符串,如果它是返回的所有行中的最大行数,则返回该字符串右侧的数字。这个词很可能在字符串中出现多次 SELECT max(cast(substring(mq.my_query_string, (locate("near/", mq.my_query_string)+5), 2) as signed)) AS "MaxNearDistance" FROM my_query mq, my_test mt WHERE mt.company_id = 1

我需要在mysql字段中搜索一个字符串以查找子字符串,如果它是返回的所有行中的最大行数,则返回该字符串右侧的数字。这个词很可能在字符串中出现多次

SELECT max(cast(substring(mq.my_query_string, (locate("near/", mq.my_query_string)+5), 2) as signed)) AS "MaxNearDistance" 
FROM my_query mq, my_test mt 
WHERE mt.company_id = 123 
      AND mq.search_query_id = mt.my_query_id 
      AND locate("near/", mq.my_query_string) > 0;
这是可行的,但它只给我返回的第一个子字符串和所有行中的最大数。我需要在所有子字符串和所有行的所有命中数中的最大值


谢谢你的帮助

我将创建一个表-数字-每个数字字符串我都希望能够为您找到“0”-“99”,然后将其加入我的数据,如:

SELECT
  mq.my_query_string, MAX(numbers.ns)
FROM my_query AS mq
JOIN numbers ON CONCAT(mq.my_query_string, ' ') LIKE CONCAT('%near ', numbers.ns, ' %')
GROUP BY mq.my_query_string
我正在给数据加一个空格,以便“11”与“1”不匹配

SQLFiddle在此:


实际上,正确的方法是规范化您的数据,这样您就有了一个my_query_表,每行有一个值,但有时我们必须发挥我们的作用。

示例数据会有所帮助。除了“near”之外还有其他单词吗?所有数字都是5位数吗?数字是1到2位数,显示方式如下:near/12。谢谢