这些表包括:
Table A: tag_num (nvarchar(6))       Table B: tag_num (nvarchar(6))
------------------------------       ------------------------------
883                                  00883查询:
select * from A test1 
inner join B test2 on test2.tag_num = test1.tag_num由于表B中的前导零,因此返回0行。
如何返回结果?
A.tag_num | B.tag_num
883       | 00883即使表B列包含前导零。
我应该使用哪种数据类型?
发布于 2015-06-24 19:37:23
您可以将列转换为int
select * 
from A test1 
inner join B test2 
      on cast(test2.tag_num as int) = cast(test1.tag_num as int)或者首先使用int作为表中的数据类型。
发布于 2015-06-24 19:37:47
您应该将字符串cast到int并对其进行连接
SELECT *
    FROM A AS test1 INNER JOIN B AS test2 
    ON CAST(test2.tag_num AS INT) = CAST(test1.tag_num AS INT)发布于 2015-06-24 19:38:50
您可以保留数据类型为NVARCHAR,并使用SUBSTRING删除以下内容中的前导零:
select * from A test1 
inner join B test2 on test1.tag_num =
SUBSTRING(test2.tag_num, PATINDEX('%[^0]%', test2.tag_num+'.'), LEN(test2.tag_num))https://stackoverflow.com/questions/31025468
复制相似问题