请问下我这段sql查询语句哪错了
 select count(姓名) from laiyuan2016 where 年龄 like  '[0-5]岁'

我想查询表laiyuan2016中,所有年龄在0-5岁的人,但是这样写却没有结果,请问是怎么回事呢,我看到书上就是这种写法啊,年龄那里是varchar的类型,不是数字

5个回答

你的原句是:select count(姓名) from laiyuan2016 where 年龄 like '[0-5]岁'
like是数据库查询中的一种模糊查询方式,如果不加模糊条件的话,你查的就是年龄='[0-5]岁'的数据。可以看出你的数据库年龄字段是字符串形式:0岁,
1岁,2岁……带汉字的,不是数字方式,对吧?
如果要查0-5岁的数据的话,应该是这样的:

 select count(姓名) from laiyuan2016 where 年龄 in ('0岁','1岁','2岁','3岁','4岁','5岁');

用like好像没法查哎!
like模糊条件有 %:任意长度的字符串;_:任意一个字符;

select 姓名,年龄 from laiyuan2016 where 年龄 between 0 and 5

希望有帮助图片说明

首先模糊查询不支持正则啊;
其次你的年龄这一列是什么类型的呢,如果是int类型或者字符串类型的话可以直接用大于、小于号的。
最后,你想打印所有符合条件的记录的名称,不应该用count (姓名)直接查符合条件的姓名。参考如下:

 select 姓名 from laiyuan2016  where 年龄>'0'  and 年龄<'5' 如果是字符类型的年龄,用字符串的比较
 select 姓名 from laiyuan2016  where 年龄>0 and 年龄<5  int类型直接就是数字的比较。

select count(姓名) from laiyuan2016 where 年龄 >0 and 年龄<5

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!