求助SQL语句报错问题

select*from[ICCard_List]whereUser_iccardnotlike'EH%'andUser_iccard>=1andUser_iccard<=... select * from [ICCard_List] where User_iccard not like 'EH%' and User_iccard >= 1
and User_iccard <= 100
当我执行以上语句后,数据库报了一行错误给我,内容如下:
消息 245,级别 16,状态 1,第 11 行
Conversion failed when converting the nvarchar value 'EH000001' to data type int.

请问该如何解决?数据库是SQL SERVER2014,User_iccard这个字段是IC卡号的意思,类型为nvarchar(100),我就是想查卡号为1-100的IC卡号,都把EH开头的卡号用not like语句去掉了,为什么还是报错误?还有User_iccard这个字段是主键,不知道有没有影响
展开
 我来答
SDMG123
2018-08-23 · TA获得超过6179个赞
知道大有可为答主
回答量:6676
采纳率:80%
帮助的人:707万
展开全部
User_iccard not like 'EH%' 和 User_iccard >= 1 同一个字段。
错误也说了。User_iccard >= 1 and User_iccard <= 100 这个由于查询栏位哪里有字符串导致转换INT失败。
根据你的思路是先先把开头有EH的数据去掉,但条件只有 User_iccard 栏位,sql server的规则就会先判断 “>,=,<” 如果要实现你的写法,必须改成:
select * from (select * from [ICCard_List] where User_iccard not like 'EH%' )v where User_iccard >= 1
and User_iccard <= 100
追问
你说的好清楚哦!但是我按你的语句执行还是报那个错误,能不能在看看,虽然分给别人了
追答
奇怪了,如果你 not like 'EH%'  这个都不行,那么可能存在特殊字符,你改成:
select * from (select * from [ICCard_List] where User_iccard not like '%EH%' )v where User_iccard >= 1
and User_iccard <= 100
虽然这样不走索引,如果还是不行。你看看是不是User_iccard字段有其他字符串的值,导致字符串转整形报错。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wendua
2018-08-23 · TA获得超过307个赞
知道小有建树答主
回答量:417
采纳率:75%
帮助的人:148万
展开全部
cast(User_iccard as int )>=1 and cast(User_iccard as int )<=100 试试
更多追问追答
追问
按你说的把语句改成select * from [ICCard_List] where User_iccard not like 'EH%'  and cast(User_iccard as int ) >= 1 and cast(User_iccard as int ) <= 100,还是报这个错误
追答
这个只能转换一下在比较了
select * from (select * from [ICCard_List] where case when User_iccard like 'EH%' then -1 else User_iccard end between 0 and100
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hu...g@163.com
2018-08-23
知道答主
回答量:51
采纳率:25%
帮助的人:10.4万
展开全部
创建者:a王正礼a1 内容简介2 成品目录3 创作背景4 后世影响5 流行注本 猜你关注
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式