在 JOIN 中使用 TRIM
Posted
技术标签:
【中文标题】在 JOIN 中使用 TRIM【英文标题】:Use TRIM in JOIN 【发布时间】:2020-04-22 14:48:44 【问题描述】:我有以下 SQL 代码
SELECT State.CODE Code,
State.CODE1 Code1,
State.CODE2 Code2,
YYY.1003."BRANCH" "Branch"
FROM XXX.1002 State
LEFT JOIN YYY.1003
ON State.CODE= YYY.1003.CODE
现在我需要一个新列来显示表 ZZZ.100 中的字段/列“国家/地区”。 密钥为 1002.CODE1 - ZZZ.100.CODE1
很遗憾,ZZZ.100.CODE1 在值之前有空格(4 个空格)。
如何使用修剪功能(这是正确的功能)在 1002.CODE1 - ZZZ.100.CODE1 上获得连接
【问题讨论】:
我只是发现使用数字表名称和别名的代码很难阅读。我对ZZZ.100
是什么有点迷茫。它不是您查询的一部分。
赞1002.CODE= Trim(YYY.1003.CODE)
?
谢谢@JNevill:你会如何把那个加入和上面的加入结合起来?
【参考方案1】:
看起来像你想要的:
select x.code, x.code1, x.code2, y.branch, z.country
from xxx.1002 x
left join yyy.1003 y on x.code= y.code
left join zzz.100 z on trim(z.code1) = x.code1
trim()
删除字符串两端的空格。如果您只想删除前导空格,可以这样做:trim(leading ' ' from z.code1)
。
请注意,我使用了更有意义的表别名,以使查询更易于编写和阅读。
我还建议不要使用全数字表名:在 Oracle 中,不带引号的标识符必须以字母字符开头。
【讨论】:
【参考方案2】:首先是为什么 Key 列上包含空格?键列不应该包含空格,这对性能来说很糟糕。 这里要考虑的重点是从该列中删除这些空格
TRIM 的使用,考虑到您使用的是 SQL Server 在 SQL Server 中,您可以使用 LTRIM(用于左侧修剪,删除左侧空格)和/或 RTRIM(用于右侧修剪,删除右侧空格)
例如: 选择 LTRIM(RTRIM(表.列)) 从表
希望对你有帮助
【讨论】:
以上是关于在 JOIN 中使用 TRIM的主要内容,如果未能解决你的问题,请参考以下文章