IF  OBJECT_ID(N'A') IS NOT NULL
DROP TABLE  A
CREATE TABLE A (ID INT IDENTITY(1,1),DESCRIPTION VARCHAR(50))
INSERT INTO A SELECT 'this is a sample'
UNION ALL SELECT '93.0'
UNION ALL SELECT '93'GOIF  OBJECT_ID(N'B') IS NOT NULL
DROP TABLE  B
GO
CREATE TABLE B (ID INT,name VARCHAR(50))
INSERT INTO B SELECT 1,'test'
UNION ALL SELECT 93, '93NAME'
 
 -----------------------------------------查询---------------------------------------------
 
 SELECT A.* FROM  A, B WHERE   REPLACE(A.DESCRIPTION,'.0','')=CONVERT(VARCHAR(10),B.ID)
 
 
/*
 (2 行受影响)
ID          DESCRIPTION
----------- --------------------------------------------------
2           93.0
3           93
*/

解决方案 »

  1.   


    你用replace啊,我不能确定数据是不是都是这样的,93.0,维护项目。我把等号两边都转了,转成decimal
      

  2.   

     this is a sample  是你的一行不能转换成整数吧
      

  3.   


    convert(int,'93.0')
    你的第一行 也是字符,则么转。
      

  4.   


    你用replace啊,我不能确定数据是不是都是这样的,93.0,维护项目。我把等号两边都转了,转成decimal this is a sample 你能转成转成decimal[???
      

  5.   

    你这个 description字段的值有什么规律么,就你给出的数据,可以用charindex判断截取小数点前的数值再来关联B表
      

  6.   

    select cast(cast ('93.0' as decimal(9,2)) as int)/*-----------
    93(1 行受影响)
    */