使用通配符进行MySQL选择(但在字段中使用通配符)

10

我有一个MySQL 5表格,其中有一个char字段

DOG
DOUG
CAT
MOUSE

现在我想在这个字段上进行SELECT操作,查找任何包含该字段的字符串,例如"DOGGY"。(这与通常使用通配符的方式相反)。所以我想选择类似于: SELECT FROM TABLE WHERE FIELD是“DOGGY”的子字符串

这是否可能?


你能详细解释一下你想做什么吗? - menacingly
具体而言,您想查找字段中包含子字符串“doggy”的行(即文本包含“doggy”中的某些字母,但不一定是全部)吗?还是您想查找字段中包含子字符串“doggy”的行(即该字段包含单词“doggy”以及可能的其他文本)?在第一种情况下,您的查询将匹配类似“dog”、“dogg”和“gy”之类的文本行。在第二种情况下,您的查询将匹配类似“hello doggy”和“what's that doggy doing there?”之类的文本行。 - octern
我想查找字段包含我正在搜索的单词子字符串的行。因此,在上面的示例中,我的选择将返回字段中包含“DOG”的行。 - Michelle Dupuis
2个回答

18
select * from mytable where 'doggy' like concat('%',mycol,'%')

“*心灵震撼*”--我经常使用LIKE,但从未想过可以像这样反转参数,直到我自己尝试了一下才相信它可以工作。我想我只是一个新手,但我认为这是一个非常棒的答案。 - octern

7
您可以使用 LOCATE() 函数来实现此操作:
SELECT * FROM MyTable WHERE LOCATE(MyField, 'DOGGY') != 0;

2
刚刚试了一下这个函数,似乎按要求工作 / 点赞 - Ingmar Boddington

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接