Sql 返回超过指定值的简单查询

Sql 返回超过指定值的简单查询,sql,Sql,我有一个数据列表,数据范围从1-500到11-500。我创建了一个查询以过滤掉除2-500之外的所有内容。但我仍然看到1-500、2-500和3-500。我不知道我的问题出在哪里。这个查询太简单了,不能搞砸 查询示例: SELECT job_no, job_name FROM JC_JOB WHERE job_no like '2-5%' 实际查询: SELECT w.wrkordnbr , rtrim(w.jcjob) + ' ' + s.name

我有一个数据列表,数据范围从1-500到11-500。我创建了一个查询以过滤掉除2-500之外的所有内容。但我仍然看到1-500、2-500和3-500。我不知道我的问题出在哪里。这个查询太简单了,不能搞砸

查询示例:

    SELECT job_no, job_name
    FROM JC_JOB
    WHERE job_no like '2-5%'
实际查询:

SELECT  w.wrkordnbr
        , rtrim(w.jcjob) + ' ' + s.name
        , w.centernbr
        , w.status
        , w.servsitenbr
        , w.dept
        , s.address
        , s.city 
FROM    wrkorder w, servicesite s 
WHERE   s.servsitenbr = w.servsitenbr 
AND     status NOT IN(1,2,3,4,5,6) 
AND     s.name LIKE '2-5%
有什么想法吗

提前谢谢。

怎么样

SELECT job_no, job_name
FROM JC_JOB
WHERE job_no BETWEEN ('2-5') and ('2-6') 
我还没试过呢那怎么办

SELECT job_no, job_name
FROM JC_JOB
WHERE job_no BETWEEN ('2-5') and ('2-6') 

我没有试过,对不起,我不相信你。如果事实上您的数据如您所述,那么查询应该只返回以2-5…开头的任何内容

declare @jobs as table
(job_no varchar(20))

insert into @jobs
values (
'1-500'
),('2-500'),('3-500'),('100-500'),('120-500'),('200-500')


SELECT job_no
    FROM @jobs
    WHERE job_no like '2-5%'
返回:

job_no
2-500
例如,如果您的数据有job_no
112-500
,而您的
Where
子句是this而不是
Where job_no像“%2-5%”
,则返回类似以下内容是有意义的:

job_no
2-500
112-500

对不起,我不相信你。如果事实上您的数据如您所述,那么查询应该只返回以2-5…开头的任何内容

declare @jobs as table
(job_no varchar(20))

insert into @jobs
values (
'1-500'
),('2-500'),('3-500'),('100-500'),('120-500'),('200-500')


SELECT job_no
    FROM @jobs
    WHERE job_no like '2-5%'
返回:

job_no
2-500
例如,如果您的数据有job_no
112-500
,而您的
Where
子句是this而不是
Where job_no像“%2-5%”
,则返回类似以下内容是有意义的:

job_no
2-500
112-500


作业号的数据类型是什么?我只是想知道,我似乎无法复制这个(我用了
nvarchar
来做作业_no)@bird2920:检查这个,即使我无法复制这个
sqlfiddle
,这里肯定还有其他东西在起作用。你是在使用变量还是像上面一样硬编码?对不起,我不相信你。如果事实上您的数据如您所述,则查询应仅返回以
2-5….
@Icarus开头的任何内容。如果您的评论正确,请不要居高临下。很明显,有些东西对他不起作用,否则他就不会发布这个问题。通常,当人们发布一个问题时,他们会尝试将其简化一点,这通常会隐藏问题。在你的代表处,我本以为你会知道这一点。工作的数据类型是什么?我只是想知道,我似乎无法复制这个(我用了
nvarchar
来做作业_no)@bird2920:检查这个,即使我无法复制这个
sqlfiddle
,这里肯定还有其他东西在起作用。你是在使用变量还是像上面一样硬编码?对不起,我不相信你。如果事实上您的数据如您所述,则查询应仅返回以
2-5….
@Icarus开头的任何内容。如果您的评论正确,请不要居高临下。很明显,有些东西对他不起作用,否则他就不会发布这个问题。通常,当人们发布一个问题时,他们会尝试将其简化一点,这通常会隐藏问题。在你的代表处,我本以为你会知道这一点。我不知道这会如何运作,除了你想要的,你会得到一切。这应该从JC_job中选择job_no,job_name,job_no介于('2-5')和('2-6')之间,Leandro继续并更改您的答案,我认为您的思路是正确的,只是您没有仔细考虑。虽然他的原始查询应该可以工作,但这也应该可以帮助解决Hanks K'Leg的问题。我今天刚注册到stackoverflow,为什么我得到了-1?因为有人将你的答案标记为不正确,但现在你要么接受了我的编辑,要么自己更正了你的答案,我会把它提高+1,这是我能做的最好的了。有些人很快就会做出判断,所以在给出答案之前要确保你的答案是好的。我不知道这会有什么效果,除了你想要的,你会得到一切。这应该从JC_job中选择job_no,job_name,job_no介于('2-5')和('2-6')之间,Leandro继续并更改您的答案,我认为您的思路是正确的,只是您没有仔细考虑。虽然他的原始查询应该可以工作,但这也应该可以帮助解决Hanks K'Leg的问题。我今天刚注册到stackoverflow,为什么我得到了-1?因为有人将你的答案标记为不正确,但现在你要么接受了我的编辑,要么自己更正了你的答案,我会把它提高+1,这是我能做的最好的了。有些人很快就会做出判断,所以在给出答案之前要确保你的答案是正确的。选择w.wrkordnbr,rtrim(w.jcjob)+''+s.name,w.centernbr,w.status,w.servsitenbr,w.dept,s.address,s.city from wrkorder w,servicesite s其中s.servsitenbr=w.servsitenbr,status not in(1,2,3,4,5,6)和s.name,比如'2-5%'hrmm。。。。像“2-5%”这样的s.name条款应该删除任何不符合该法案的内容,而不考虑声明的其余部分。你没有使用括号,所以它不可能是(这个)或(这个和这个)的情况,所以回到试图找出什么是错误的。我建议您尝试使用您能使用的最简单的语句,比如OP,然后将其他部分添加到其中,以尝试发现bug。一定是出了什么问题,但正如我写的那样,我看不出有什么问题,恐怕在您排除更多故障或提供更多信息之前,我无法在这方面提供更多帮助。这就是我的困惑所在。它没有理由返回3-5s或1-5s,但它是。尝试将s.name(如“2-5%”更改为s.name='2-500'(确实存在的内容)选择w.wrkordnbr,rtrim(w.jcjob)+''+s.name,w.centernbr,w.status,w.servsitenbr,w.dept,s address,s.city从wrkorder w更改为s.service site,其中s.servsitenbr=w.servsitenbr,status不在(1,2,3,4,6)还有像“2-5%”这样的美国名字。。。。像“2-5%”这样的s.name条款应该删除任何不符合该法案的内容,而不考虑声明的其余部分。你没有使用括号,所以它不可能是(这个)或(这个和这个)的情况,所以回到试图找出什么是错误的。我建议您尝试使用您能使用的最简单的语句,比如OP,然后将其他部分添加到其中,以尝试发现bug。一定是出了什么问题,但正如我写的那样,我看不出有什么问题,恐怕在您排除更多故障或提供更多inf之前,我无法在这方面提供更多帮助