我有一个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行的可靠方法,即搜索项被任何字母A-z,0-9所取代。有任何想法吗?这对MySql来说甚至可能吗?
谢谢!
答案 0 :(得分:3)
您可以在SQL中使用正则表达式
SELECT * FROM `table` WHERE desc REGEXP '\bbike\b'
答案 1 :(得分:1)
您应该开始阅读MySql RegEx。
示例代码。
SELECT * FROM
table
WHERE field_name REGEXP PATTERN;
更具体
详情表
ID NAME 1 Dipesh 2 Dip 3 Dipe 4 DiDi 5 Di
table
<强>结果强>
NAME - &gt;二
SELECT * FROM details WHERE NAME REGEXP '^Di$';
<强>结果强>
NAME - &gt;迪迪,迪
SELECT * FROM details WHERE NAME REGEXP 'Di$';
<强>结果强>
NAME - &gt; Dip,DiDi,Di
答案 2 :(得分:0)
您需要在查询中指定其他条件:
SELECT *
FROM `mytable`
WHERE
`desc` LIKE '% bike %' OR
`desc` LIKE '% bike' OR
`desc` LIKE 'bike %';
答案 3 :(得分:0)
试试这个,希望它能帮到你
"SELECT * FROM `mytable` WHERE `desc` LIKE '% bike'