在 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的主要内容,如果未能解决你的问题,请参考以下文章

使用LINQ从两个表(join)获取数据,并使用MVC 5将结果返回到View

MySQL中使用trim()删除两侧字符

实用!Mybatis中trim标签的使用教程

javascript的trim用法

js中trim怎么使用?

$.trim().val 不是函数