sql server字符串类型转换为整形解决方法
sql server字符串类型转换为整形
数据库两个表做外连, 主表A 的DESCRIPTION字段是nvarchar类型的,从表B的ID是自增整形。
A 表的数据可能存在这样的情况:
A:
ID description
1 this is a sample
2 93.0
3 93
B:
ID name
1 test
... .....
93 93name
这样A left join B 的关联条件是:CONVERT( A.description AS INT) = B.ID
93.0 的记录报错,提示93.0不能转换成整形。
我想要A表的第二条记录和第三条记录都在结果集里,大家都怎么转啊?
------解决方案--------------------
数据库两个表做外连, 主表A 的DESCRIPTION字段是nvarchar类型的,从表B的ID是自增整形。
A 表的数据可能存在这样的情况:
A:
ID description
1 this is a sample
2 93.0
3 93
B:
ID name
1 test
... .....
93 93name
这样A left join B 的关联条件是:CONVERT( A.description AS INT) = B.ID
93.0 的记录报错,提示93.0不能转换成整形。
我想要A表的第二条记录和第三条记录都在结果集里,大家都怎么转啊?
------解决方案--------------------
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'
GO
IF 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
*/