2

我有一个 MySql 数据库,其中一些行如下:

ID    DESC
 1    This is my bike
 2    Motorbikes are great
 3    All bikers should wear helmets
 4    A bike is great for exercise
 5    A. Top. Bike.

我想要做的是返回搜索词周围有空格的行,或者该词位于描述的末尾或开头。

例如,

"SELECT * FROM `mytable` WHERE `desc` LIKE '%bike%'"

将返回所有行。但,

"SELECT * FROM `mytable` WHERE `desc` LIKE '% bike %'

只会返回第 4 行。

我真正想要的是一种可靠的方式来返回第 1、4 和 5 行,即搜索词被任何东西包围,但字符 Az、0-9。有任何想法吗?这甚至可以用 MySql 实现吗?

谢谢!!

4

4 回答 4

3

您可以在 SQL 中使用正则表达式

SELECT * FROM `table` WHERE desc REGEXP '\bbike\b'
于 2013-02-11T12:11:08.663 回答
1

您应该开始阅读有关MySql RegEx的内容。

示例代码。

SELECT * FROM table WHERE field_name REGEXP PATTERN;

更详细

详细信息表

身份证名称
1 迪佩什
2 浸
3 浸
4 滴滴
5迪
SELECT * FROM details WHERE NAME REGEXP '^Di$';

结果

名称 -> 迪

SELECT * FROM details WHERE NAME REGEXP 'Di$';

结果

名称 -> 滴滴,滴滴

SELECT * FROM details WHERE NAME REGEXP '^Di';

结果

名称 -> Dip、DiDi、Di

于 2013-02-11T12:15:01.650 回答
0

您需要在查询中指定附加条件:

SELECT  *
FROM    `mytable`
WHERE
    `desc` LIKE '% bike %' OR
    `desc` LIKE '% bike' OR
    `desc` LIKE 'bike %';
于 2013-02-11T12:10:31.893 回答
0

试试这个,希望对你有帮助

"SELECT * FROM `mytable` WHERE `desc` LIKE '% bike'
于 2013-02-11T12:14:03.277 回答