MySQL的选择使用通配符(但通配符域)

问题描述:

我有一个MySQL 5表一个char场举行MySQL的选择使用通配符(但通配符域)

DOG 
DOUG 
CAT 
MOUSE 

现在我要选择这个领域,找到任何行,其中该字段的字符串中存在如“DOGGY”。 (这与您通常使用通配符的方式相反)。所以我想一个选择是这样的: SELECT FROM表,其中字段是“狗”

子串这可能吗?

+0

你能解释更多你想要做什么? – menacingly 2012-03-04 03:10:00

+0

具体来说,你是否想查找字段中有“小狗”子字符串的行(即文本中包含“小狗”中的某些字母,但不一定全部是这些字母)?或者你是否想查找“小狗”是该字段子字符串的行(即该字段是否包含“狗狗”一词以及其他可能的文本)? 在第一种情况下,您的查询将匹配具有“dog”,“dogg”和“gy”等文本的行。 在第二种情况下,您的查询会将行与文本相匹配,例如“hello doggy”和“那里有什么狗狗?” – octern 2012-03-04 03:16:34

+0

我想查找字段中包含我正在搜索的单词的子字符串的行。所以在上面的例子中,我的select会在字段中返回带有“DOG”的行。 – 2012-03-04 03:18:53

你应该能够使用LOCATE()来实现这一目标:

SELECT * FROM MyTable WHERE LOCATE(MyField, 'DOGGY') != 0; 
+1

Downvoter,随时发表评论。 – 2012-03-04 03:18:57

+2

刚刚玩过这个功能,似乎按要求工作/ upvote – Ing 2012-03-04 03:39:43

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

\ *头脑风暴\ * - 我一直都在使用LIKE,但是我从来没有想过要颠倒这样的参数,而且我必须自己尝试一下我确信它可以工作。我想我只是一个小菜鸟,但我认为这是一个非常棒的答案。 – octern 2012-03-04 07:30:09