首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >删除联接中的前导零

删除联接中的前导零
EN

Stack Overflow用户
提问于 2015-06-24 19:35:13
回答 5查看 7.4K关注 0票数 1

这些表包括:

代码语言:javascript
运行
复制
Table A: tag_num (nvarchar(6))       Table B: tag_num (nvarchar(6))
------------------------------       ------------------------------
883                                  00883

查询:

代码语言:javascript
运行
复制
select * from A test1 
inner join B test2 on test2.tag_num = test1.tag_num

由于表B中的前导零,因此返回0行。

如何返回结果?

代码语言:javascript
运行
复制
A.tag_num | B.tag_num
883       | 00883

即使表B列包含前导零。

我应该使用哪种数据类型?

EN

回答 5

Stack Overflow用户

发布于 2015-06-24 19:37:23

您可以将列转换为int

代码语言:javascript
运行
复制
select * 
from A test1 
inner join B test2 
      on cast(test2.tag_num as int) = cast(test1.tag_num as int)

或者首先使用int作为表中的数据类型。

票数 11
EN

Stack Overflow用户

发布于 2015-06-24 19:37:47

您应该将字符串cast到int并对其进行连接

代码语言:javascript
运行
复制
SELECT *
    FROM A AS test1 INNER JOIN B AS test2 
    ON CAST(test2.tag_num AS INT) = CAST(test1.tag_num AS INT)
票数 4
EN

Stack Overflow用户

发布于 2015-06-24 19:38:50

您可以保留数据类型为NVARCHAR,并使用SUBSTRING删除以下内容中的前导零:

代码语言:javascript
运行
复制
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))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31025468

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档