【问题标题】:Values in vertical bars using IN operator - SQL使用 IN 运算符的竖线中的值 - SQL
【发布时间】:2020-06-13 08:23:37
【问题描述】:

我遇到了一个查询,其中几个值被包含在垂直条中,进一步到 IN 操作符。 任何人都可以就这种情况下竖线的使用和效果提出建议吗?

例子:

SELECT businesspa0_.C_BP_Group_ID AS C1_139_0_,
FROM C_BP_Group businesspa0_
WHERE businesspa0_.C_BP_Group_ID in( |713643BF6582479BAD2AF21B80836AA2|, |EAF66367C3D04B30A2F3A1E953A6E703|, |26A1FE81E1EA4A6E8D3517E8232264D1|, |1B7DCAD27AF64D16ADCFB4EBE8600078|, |A61E061A702547BB8E1D6B749B4A502A|)

【问题讨论】:

  • 这不是有效的 SQL。它必须是一些定制的语法,可能由用于生成 SQL 的工具支持。它也可能是特定于特定数据库的,尽管它看起来对我来说并不熟悉。

标签: sql syntax


【解决方案1】:

评论太长了。

我不相信| 意味着 SQL 标准中的任何内容。双竖线||用于字符串连接。

也就是说,在许多数据库中,| 用作中缀,按位 or 运算符。这显然不是这种情况下的用途,因为第一次使用没有“左”运算符。

可能有一些数据库支持单竖线,这在这种情况下是有意义的。

您可能完全知道字符串应该用单引号括起来。您的值看起来像二进制十六进制值。这些如何在输入中表示取决于数据库。例如,在 Postgres 中,这将是:

x'A61E061A702547BB8E1D6B749B4A502A'

【讨论】:

  • 感谢您的回复。该查询是由我正在使用的 CRM Web 应用程序自动生成的。想知道为什么出现竖线而不是单引号。
【解决方案2】:

这不是真正的 SQL 语法。 您可以使用如下查询:

SELECT businesspa0_.C_BP_Group_ID AS C1_139_0_,
FROM C_BP_Group businesspa0_
WHERE businesspa0_.C_BP_Group_ID in( '713643BF6582479BAD2AF21B80836AA2', 'EAF66367C3D04B30A2F3A1E953A6E703', '26A1FE81E1EA4A6E8D3517E8232264D1', '1B7DCAD27AF64D16ADCFB4EBE8600078', 'A61E061A702547BB8E1D6B749B4A502A')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-11
    • 2011-06-26
    • 2014-07-21
    相关资源
    最近更新 更多