【问题标题】:Get matching substring in MySQL SELECT ... LIKE在 MySQL SELECT ... LIKE 中获取匹配的子字符串
【发布时间】:2013-01-19 20:39:01
【问题描述】:

在 MySQL 中,当使用

查询包含大量文本的表时
SELECT textcol FROM manytexts WHERE textcol LIKE "%interesting % bit%";

我怎样才能只取回 textcol 中的匹配位?

例如来自

“等等等等有趣的绿色位等等等等”

预期结果:

“有趣的绿点”

谢谢!

【问题讨论】:

  • 与此同时,我意识到显然在查询“%interesting % bit%”中,由于开头和结尾的 %,整个记录是匹配的。因此,当然欢迎任何其他能让我达到预期结果的结构。

标签: mysql select substring sql-like


【解决方案1】:

也许还有其他方法,但你可以使用SUBSTRINSTRLENGTH

SELECT SUBSTR(field, 1, INSTR(field, 'bit') + LENGTH('bit') - 1)
FROM (
  SELECT SUBSTR(YourField, INSTR(YourField, 'interesting'), LENGTH(YourField)) field
  FROM YourTable
  ) t

这里是小提琴:http://sqlfiddle.com/#!2/539b6/2

祝你好运。

【讨论】:

  • 你应该限制你的内部选择(例如FROM YourTable WHERE YourField LIKE '%interesting bit%'),否则你会得到很多空行......
猜你喜欢
  • 1970-01-01
  • 2011-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多