您现在的位置: 爱51代码网 >> 范文 >> 文章正文
varchar 值 '1,3,5' 转换成数据类型 int 时失败

例子:
表ERPZKeyWord(产品表)
ID[int]                      keyword[varchar类型]
1                              产品A
2                              产品B
3                              产品C
4                              产品D
5                              产品E
6                              产品F
表ERPZSetMenu
ID[int]                      ProID(数据存入ERPZKeyWord关联ID)[varchar类型]
1                             1,3,5
2                             2,4,5
想要的结果是

1                             产品A,产品C,产品E
2                             产品B,产品D, 产品E

SQL:
select ID,
stuff((select ','+KeyWord from (select zsm.ID,zkw.KeyWord from ERPZSetMenu  as zsm , ERPZKeyWord as zkw   where zkw.id in(ProID)) as a where a.ID=t.ID for xml path('')),1,1,'') ProName
from (select zsm.ID from ERPZSetMenu  as zsm , ERPZKeyWord as zkw   where zkw.id in(ProID)) as  t

这样写的结果是 报错: varchar 值 '1,3,5' 转换成数据类型 int 时失败。
有什么解决的办法么?
网上找到的
select * from dbo.ERPZKeyWord where
id in
(
select ProID from dbo.ERPZSetMenu
where charindex(ltrim(id), (select top 1 ProID from ERPZSetMenu ))>0
)

这种解决办法 还是不行? 有哪位大神可以帮忙解决下? create table ERPZKeyWord
(ID int,keyword varchar(10))
 
insert into ERPZKeyWord
 select 1,'产品A' union all
 select 2,'产品B' union all
 select 3,'产品C' union all
 select 4,'产品D' union all
 select 5,'产品E' union all
 select 6,'产品F'
 
create table ERPZSetMenu
(ID int,ProID varchar(10))
 
insert into ERPZSetMenu
 select 1,'1,3,5' union all
 select 2,'2,4,5'
 
 
with t as
(select a.ID,c.keyword 'k'
 from ERPZSetMenu a
 inner join master.dbo.spt_values b on b.type='P' and b.number between 1 and len(a.ProID)
                                       and substring(','+a.ProID,b.number,1)=','
 inner join ERPZKeyWord c on substring(a.ProID,b.number,charindex(',',a.ProID+',',b.number)-b.number)
                             =c.ID
)
select a.ID,
       stuff((select ','+b.k
              from t b
              where b.ID=a.ID for xml path('')),1,1,'') 'ProKeyword'
 from t a
 group by a.ID 
   
/*
ID          ProKeyword
----------- --------------------
1           产品A,产品C,产品E
2           产品B,产品D,产品E
 
(2 row(s) affected)
*/

  • 上一篇文章:

  • 下一篇文章: 没有了
  • 最新文章 热点文章 相关文章
    redhat 2.6 (santigo 5.6) vsftp
    shell如何实现自动填写操作执行下
    linux shell 文件配置sh:color:
    shell script语法一定要加path吗
    SecureCRT如何访问虚拟机vmWare中
    C#如何读取WINDOWS的放大系数
    cximge的图如何存入数据库并提取
    DBGRID控件显示查询结果文本类型
    TChart控件如何把表中右边的系列
    fastreport提示没有找到fr_class
    cximge的图如何存入数据库并提取
    linux下编译faac及faad2提示 rec
    accept无法获取客户端ip
    TClientDataSet如何避免多人更新
    如何用delphi代码修改XML节点
    vc++ pvoid *用delphi怎么表达
    GIS用百度行政区域的经纬度直接画
    不小心卸载了.net 4 extend,vs2
    C#byte【】里的数转换成string时
    C#的session取不到值
    附加数据库对于服务器pc失败
    sql如何获取当前日期 向后推
    SQL 怎样在原表将一条数据根
    SQL日期转换成英文并赋值给某
    sqlserver存储过程执行后变量
    sql server 2008到安装程序支
    sqlserver类型改成bigint了是
    sqlserver游标慢怎么办
    SQL SERVER 2000 作业节假日
    如何同时查询2个库的表进行对
     



    设为首页 | 加入收藏 | 网站地图 | 友情链接 |