mysql:需要搜索数据的代码

时间:2010-06-28 06:49:14

标签: mysql

我需要一些代码来搜索DB内的一些数据...... 我有两个字段idname ... 如果我键入“ABC”,它可以显示有关“ABC”的所有数据.. 如果“DEF”=>所有DEF数据......或者我输入任何东西它可以显示“任何东西”......

我只知道如何在字段内显示“ABC”和“DEF”一起显示的所有数据,代码如下:

"SELECT ID,Name FROM Regist ORDER BY date";

4 个答案:

答案 0 :(得分:1)

可能你想要这样的东西:

SELECT id,name FROM Regist WHERE NAME LIKE '%ABC%' OR NAME LIKE '%DEF%';

请注意,这种搜索效率低下,如果你需要类似的东西,你最好使用像Sphinx这样的搜索

答案 1 :(得分:1)

MySQL通配符:_%(与关键字LIKE结合使用)


_表示单个字符

SELECT name FROM colors WHERE name LIKE 'gr_y';

输出:'grAy','灰色'。


%表示任意数量的字符

SELECT name FROM colors WHERE name LIKE 'gr%';

输出:'grAY','grey','grEEN'。


您可以多次同时使用_%

SELECT name FROM color WHERE name LIKE '_ra%';

输出:'GraY','OraNGE'。


在您的情况下,如果您要列出包含以“ABC”或“DEF”开头的名称,您的查询将如下所示:

SELECT id,name FROM Regist
    WHERE name LIKE 'ABC%' OR name LIKE 'DEF%'
    ORDER BY date

如果您希望您的名字在任何地方包含字符串'ABC'或'DEF',您的查询将是:

SELECT id,name FROM Regist
    WHERE name LIKE '%ABC%' OR name LIKE '%DEF%'
    ORDER BY date

最后,如果您希望您的名字同时包含'ABC'和'DEF',您可以使用:

SELECT id,name FROM Regist
    WHERE name LIKE '%ABC%DEF%' OR name LIKE '%DEF%ABC%'
    ORDER BY date

答案 2 :(得分:0)

从小处我明白你的问题

"SELECT ID,Name FROM Regist where name='ABC' ORDER BY date";

答案 3 :(得分:0)

这是正确的吗?

"SELECT id,name FROM Regist WHERE id LIKE '%' OR NAME LIKE '%' ORDER BY date";