在绑定参数中传递了多个值

Posted

技术标签:

【中文标题】在绑定参数中传递了多个值【英文标题】:passed multiple values in the bind parameter 【发布时间】:2021-08-27 14:28:54 【问题描述】:

我正在运行以下查询,但它不工作

select * From  table r where account_id = 1111 and phone_number 
in (   :phone ) 

我传递了这些值

(1111111111,2222222222,3333333333)

但它没有返回任何结果。如果我只通过其中一个,它确实会返回结果。

【问题讨论】:

有多种方法可以解决这个问题,但首先,各个值来自哪里以及如何构造单个绑定值(CSV 字符串)?如果您可以使用集合而不是字符串,那么它会更简单;或者如果它们来自同一个数据库,那么您可能完全可以避免使用变量。 值来自 GUI 【参考方案1】:

你可以使用:

select /*+ full(r) parallel(r,8) */
       *
From   table_name r
where  account_id = 1111
and    ','||:phone:||',' LIKE '%,'||phone_number||',%'

关于您的查询:

但它没有返回任何结果。如果我只通过其中一个,它确实会返回结果。

绑定变量是单个字符串而不是字符串列表,因此您的查询相当于:

select /*+ full(r) parallel(r,8) */
       *
From   table_name r
where  account_id = 1111
and    phone_number in ( '1111111111,2222222222,3333333333' );

这不是您预期的查询:

select /*+ full(r) parallel(r,8) */
       *
From   table_name r
where  account_id = 1111
and    phone_number in ( '1111111111','2222222222','3333333333' );

由于该表不包含与字符串 '1111111111,2222222222,3333333333' 匹配的电话号码,因此它返回零行。

【讨论】:

以上是关于在绑定参数中传递了多个值的主要内容,如果未能解决你的问题,请参考以下文章

如何在onClick事件绑定中传递参数?

Common-Lisp:绑定形式参数,到底传递了啥?

调用微风函数时如何将数据绑定值作为参数传递

669 v-on:绑定多个事件,参数传递,修饰符

jQuery事件绑定

jquery如何绑定一个已有的方法并传递参数