--- 关于SQL的两条查询语句 ----

来源:百度知道 编辑:UC知道 时间:2024/05/11 12:59:58
例:我有很多产品信息在数据库中,区别和查找他们的唯一办法是通过查询一个名字为“批次”的属性(该属性为4位数字组合),正常查询一个结果的语句如下:
where 批次 like‘%1234’

问题:
1.若我想同时查询到“批次”号1234 至 1250 之间的数据,正确的语句该怎么写?是不是用 “between”?请给出正确的写法。

2.若我现在同时有1234、1254、1355、1466等诸多不规律且不相连的“批次”号,我该用什么语句把他们同时查询出来?

谢谢!回答精彩的追加20分!
首先感谢大家的踊跃回答,但是我的实际情况比较复杂,我已经分别给第一批回答我问题的用户单独发去了信息说明实际情况,以便能够为我提供最为准确的答案。
再次感谢以下用户的信息回复:
heyonghacker,不怀好心,burrcao,googlezhidaole

特别感谢googlezhidaole在信息中的详细讲解!

问题1:特别注意的是应该先把字符串转化为数值型,再用between and语句或者<= 、>=,具体语句为:
where to_number(批次) between 1234 and 1250
(该语句验证通过)

问题2:诸多不规律且不相连的“批次”号可以用IN:
where 批次 in ('1234','1254','1355','1466')
考虑到IN的执行效率,你也可以改用OR:
where 批次 = '1234' or 批次 = '1254'........

where 批次 between '1243' and '1250'

where 批次 in ('1234','1254','1355','1466')

你用函数转换为数值,那样用><=比较查询不就方便多了》?

where 批次 like '[0-9][0-9][0-9][0-9]%'

开头4个字符是数字的时候都查询出来

问题:
1.若我想同时查询到“批次”号1234 至 1250 之间的数据,正确的语句该怎么写?是不是用 “between”?请给出正确的写法。

select 列名 from 表名 where 批次 like 'DACT2006010123[4-9]' or 'DACT2006010124[0-9]' or 'DACT20060101250'

2.若我现在同时有1234、1254、1355、1466等诸多不规律且不相连的“批次”号,我该用什么语句把他们同时查询出来?

select 列名 from 表名 where 批次 in ('DACT20060101234','DACT20060101254','DACT20060101