nvarchar和int无法用来直接比较,需要其中一个做类型转换

解决方案 »

  1.   

    SELECT  *
    FROM    userinfo U
    WHERE   EXISTS ( SELECT 1
                     FROM   hr_Training_records H
                     WHERE  CHARINDEX(chanyurenid, CONVERT(VARCHAR, U.id)) > 0 )   --转换一下
      

  2.   

    IF OBJECT_ID('tempdb..#temp','U') IS NOT NULL DROP TABLE #temp
    CREATE TABLE #temp
    (
    chanyurenid nvarchar(100)
    )
    INSERT INTO #temp VALUES ('122,195,196,193,215,216')SELECT  T.c.value('.','int') AS chanyurenid
    FROM (
    SELECT CONVERT(XML,'<root><v>'+REPLACE(A.chanyurenid,',','</v><v>')+'</v></root>')  AS id
    FROM #temp AS A ) AS A
    CROSS APPLY A.id.nodes('root/v') T(c)
      

  3.   


    怎么没看明白呢,查询出来也没有数据!写反了
    SELECT  *
    FROM    userinfo U
    WHERE   EXISTS ( SELECT 1 
    FROM   hr_Training_records H
    where charindex(','+convert(varchar,u.id)+',',','+chanyurenid+',')>0)
      

  4.   


    select * 
     from userinfo a
     where exists 
     (select 1 
      from hr_Training_records b
      where b.id=131 and charindex(','+rtrim(a.id)+',',','+b.chanyurenid+',',1)>0)