【发布时间】:2020-12-14 22:20:34
【问题描述】:
我想在下面的 SQL 查询中删除从 cvdl.C 语句返回的第一个字符,并且该值应该与 ccp.B 值匹配。
例如,如果cvdl.C语句返回的实际值是4500,我想去掉4,只取500部分来匹配ccp.B值中的值。我还需要为查询传递一个输入参数值。
如何修改下面的 SQL 查询来实现这个目标?
SELECT ccp.A
FROM ccp, cvdl
WHERE cvdl.J = 'Example' and ccp.B = cvdl.C
【问题讨论】:
-
如果您有
450或45001等怎么办?我认为需要更多示例数据和通用规则。此外,您可以保留旧式连接语法,并使用诸如SELECT ccp.A FROM ccp JOIN cvdl ON ccp.B = cvdl.C之类的显式连接(顺便说一句,我没有投反对票,只是评论了 :)) -
@Barbaros Özhan 是对的。另外,如果值是
14500而不是4500怎么办?第一个字符总是单个数字吗?您可以提供与实际数据相似的样本随机数据。 -
不要在意这些值,我只是想查询通常适用于这种情况的方法。另外我忘了提到我还需要传递一个输入参数值。我会编辑它。
-
什么数据类型?在您的示例中,您使用了一个数字,但是从 4000 中删除的 4 最终将变为 0。这是您想要的吗?还是我们在谈论字符串('4000' 变成 '000')?
-
顺便说一句:逗号分隔的连接 (
FROM ccp, cvdl) 已成为过去。看到你还在使用它们很奇怪。这看起来就像您在 30 年前学习 SQL,然后停在那里。虽然 Oracle 在 2001 年采用“新”语法 (FROM ccp INNER JOIN cvdl ON ...) 很晚,但这仍是 19 年前。
标签: sql oracle join where-clause