【发布时间】:2022-01-01 03:32:44
【问题描述】:
我想使用列 invoice 和 nr 内部连接 TableA 和 TableB。
nr 列在两个表上都有不同的格式
在表 A 中。列nr 始终具有三个位置或一个空值。
在 TableB 中,列 nr 有 1 或 2 个位置。
例如,如果我们在两个表上检查 invoice= 322 和 invoice= 234。 我必须在TableB上填写“0”或“00”才能等于职位数。
对于 TableA,当nr 为 null 或空值时,我想将其替换为 0
例如,如果我们在两个表上检查 invoice=123 和 invoice=567。
感谢您提供的任何帮助。
【问题讨论】:
-
预期结果是什么?
-
"B 列在 TableA 的两个表上的格式不同" 那么它们的值就不同了。首先修复您的设计,然后担心加入。显然你应该在这里整理你的引用完整性并实现主键和外键。
-
当您说列
B时,我想您的意思是列nr?它们的数据类型不同,因此您无法安全地加入该列。就是这么简单。先把设计修好,这个问题就不存在了,也没有任何你保留这个错误设计以后还会遇到的问题 -
一个
workaround为您的设计问题将在您加入之前将列nr从tableA转换为int,例如join TableB b on convert(int, a.nr) = b.nr。但这不是一个安全的解决方法,修复设计是最好的解决方案 -
到目前为止您尝试过什么?您的加入目前是什么样的?请对查询进行初步破解,并向我们展示具体是什么让您绊倒。
标签: sql sql-server sql-server-2012