CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

!求助“将 nvarchar 值 ''1','10','11','3'' 转换为数据类型为 int 的列时发生语法错误。”

楼主zongsen(╃Coffee╃)2006-03-03 13:09:57 在 .NET技术 / C# 提问

原帖:http://community.csdn.net/Expert/topic/4590/4590229.xml?temp=.7383081  
   
  刚才请教了大家一个问题,但还是不能达到要求。  
   
  按“横舟摆渡”说的:  
  SELECT   filed1   FROM   Employee   WHERE   @EmployeeID   Like   '%'+RTRIM(CAST(EmployeeID   as   nvarchar(10)))+',%'  
  这样可以执行,如果@EmployeeID   ='1,12,13,17',那查询出来的结果里除包括这四个外,还可能有2,3,7的记录。  
   
  如果改成这样:  
  SELECT   filed1   FROM   Employee   WHERE   RTRIM(CAST(EmployeeID   as   nvarchar(10)))   IN   (@EmployeeID)  
  查询不出结果来。请大家帮忙看一下是什么原因,多谢! 问题点数:20、回复次数:16Top

1 楼zongsen(╃Coffee╃)回复于 2006-03-03 13:13:21 得分 0

大伙来帮帮忙啊。。。  
  xinyangt(信仰t),刚才在函数里不能建临时表,你看还有什么办法?Top

2 楼zongsen(╃Coffee╃)回复于 2006-03-03 13:53:54 得分 0

大家伙帮帮忙啊,着急啊:(Top

3 楼soaringbird()回复于 2006-03-03 13:56:38 得分 0

declare   @employeeid   varchar(10)  
  set   @employeeid='1,12,13,17'  
  select   id   from   t1   where   patindex('%'+cast(id   as   varchar)+',%',@employeeid+',')>0  
  select   id   from   t1   where   @employeeid+','   like   '%'+cast(id   as   varchar)+',%'Top

4 楼zongsen(╃Coffee╃)回复于 2006-03-03 14:11:59 得分 0

select   id   from   t1   where   @employeeid+','   like   '%'+cast(id   as   varchar)+',%'  
  这个上面已经说了,不准确.  
  上面那个我试试...Top

5 楼soaringbird()回复于 2006-03-03 14:19:33 得分 0

注意@employeeid+','   比主贴里多个小尾巴Top

6 楼zongsen(╃Coffee╃)回复于 2006-03-03 14:20:39 得分 0

这两句功能是一样的啊。  
  如果@EmployeeID='1,12,17,'  
  那结果里面ID是2和7的也将被查询出来。Top

7 楼zongsen(╃Coffee╃)回复于 2006-03-03 14:21:21 得分 0

我再试试Top

8 楼soaringbird()回复于 2006-03-03 14:22:27 得分 0

那就在前面也加上','Top

9 楼soaringbird()回复于 2006-03-03 14:23:03 得分 0

select   id   from   t1   where   @employeeid+','   like   '%,'+cast(id   as   varchar)+',%'Top

10 楼zongsen(╃Coffee╃)回复于 2006-03-03 14:24:55 得分 0

还是一样,我现在@EmployeeID='1,17,'  
  结果里面ID是7的也将被查询出来了。  
  select   EmployeeID   from   Employee   where   ','   +   @EmployeeID   +   ','   like   '%'   +   cast(EmployeeID   as   varchar)   +   ',%'Top

11 楼soaringbird()回复于 2006-03-03 14:28:43 得分 0

select   id   from   t1   where   ','+@employeeid+','   like   '%,'+cast(id   as   varchar)+',%'  
  这样就行了。上面几个里面的逗号都加少了Top

12 楼zongsen(╃Coffee╃)回复于 2006-03-03 14:28:47 得分 0

@EmployeeID='1,11,17,'  
  SELECT   EmployeeID   FROM   Employee   WHERE   @EmployeeID   LIKE   '%,'   +   CAST(EmployeeID   AS   varchar)   +   ',%'  
  现在只能查出来11和17,1的查不到了。Top

13 楼zongsen(╃Coffee╃)回复于 2006-03-03 14:29:49 得分 0

好了!  
  请问加逗号是什么原因?Top

14 楼soaringbird()回复于 2006-03-03 14:33:40 得分 20

你最后写的那个不行  
  where   ','+@employeeid+','   like   '%,'+cast(id   as   varchar)+',%'  
  ','+@employeeid+','   是保证第一个和最后一个元素也被前后两个逗号包围。  
  '%,'+cast(id   as   varchar)+',%'这样保证每个元素不进行半截子匹配  
  Top

15 楼zongsen(╃Coffee╃)回复于 2006-03-03 14:36:11 得分 0

知道了,结帖!Top

16 楼xinyangt(信仰t)回复于 2006-03-03 14:44:45 得分 0

其实   sql还是应该尽量用存储过程   这样层次好些   前台和后台也更独立Top

相关问题

  • 将 nvarchar 值 'Label' 转换为数据类型为 int 的列时发生语法错误!??????
  • !求助“将 nvarchar 值 ''1','10','11','3'' 转换为数据类型为 int 的列时发生语法错误。”
  • vc到c#的语法转换问题!!!
  • sqlserver与ACCESS语法替换,转换
  • 简单的,vb语法到c#语法转换
  • 请教简单的 C# 语法 转换为 VB.net 的语法
  • "转换为数据类型为 int 的列时发生语法错误" 和 "列名无效"
  • case when 中转换为数据类型为 int 的列时发生语法错误
  • 将 varchar 值 '1,2,3,4,5,6' 转换为数据类型为 int 的列时发生语法错误
  • 将 varchar 值 'bb ' 转换为数据类型为 int 的列时发生语法错误。

关键词

  • 查询
  • employeeid
  • cast
  • 逗号
  • nvarchar
  • as varchar
  • employee
  • 结果
  • where
  • select

得分解答快速导航

  • 帖主:zongsen
  • soaringbird

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo