0

我之前问过这个问题:

如何获得两个文本项之间的增量

但我还需要一个更二元的答案。也就是说,有没有办法判断一个文本条目是否包含另一个。再举个例子:

This is a line.

This is a line.  And another.

MySQL中是否有一种简单的方法来告诉第一个包含在第二个中?这两项都是文本类型的列中的条目。

更新:

我的桌子看起来像这样

id INT,mytext 文本

所以,我真正想做的是编写一个查询来回答以下问题:

查找此表中 mytext 包含在 mytext_for_another_record 中的所有记录,其中 id=SOMENUMBER。

也许更好的说法是:查找记录中包含 id=123 和 mytext(for id 123) 的所有记录。

因此,我正在扫描整个表以查找包含 id=123 条目的文本的记录。

示例数据:

编号 | 文本

1 | 这是第 2 行 | 这是一条线,这里是另一个 3 | 随机 4 | 随机这是一条线

现在,假设文本非常长,而不是短文本条目,比如 1000 个字符。假设我想在数据库中查找包含记录 1 中的文本的所有记录。这样做是唯一的方法LIKE '%this is a line%'吗?有没有办法通过给出记录的ID来查看?

4

4 回答 4

2

检查INSTR(haystack, needle)函数,并将其与 0 进行比较。如果为 0,haystack则不包含needle. 您也可以使用LIKE运算符和通配符 ( %) 来执行此操作,但您必须避开这些%符号。

于 2012-06-15T20:56:12.637 回答
0

这应该会返回包含给定文本的所有行:

SELECT id, line FROM lines WHERE line LIKE '%This is a line.%';

小提琴就在这里

于 2012-06-15T20:55:44.237 回答
0

您可以使用该功能LOCATE。如果 1 字符串出现在另一个字符串中,您将得到一个数字,否则为 0。

功能是LOCATE(substr,str)。详情请看这里

于 2012-06-15T20:57:46.130 回答
0

你也可以使用 concat():

SELECT id, searched,text FROM table_name WHERE text LIKE concat('%', searched, '%');
于 2015-11-23T15:43:11.663 回答