Ruby PG Gem Using TextEncoder::Array for SELECT WHERE fieldname IN exec_params
Ruby PG Gem Using TextEncoder::Array for SELECT WHERE fieldname IN exec_params
我需要从数组中搜索 id 字段。我正在使用 PG
gem,所以我想我应该使用 TextEncoder::Array.new.encode(myarray)
来推入合格列表。 PostgreSQL
结构如下:
SELECT id FROM tablename WHERE fieldname IN ('alpha', 'bravo', 'charlie')
所以我在 Ruby
中的起始数组是 ['alpha', 'charlie', 'bravo']
,所以这是我当前的语法:
a = ['alpha', 'bravo', 'ccharlie']
b = $conn.exec_params( %Q{ SELECT id FROM tablename WHERE fieldname IN ( ) }, [ PG::TextEncoder::Array.new.encode(a) ] )
puts b.inspect
exec_params
显然需要一个数组,即使它是单个数组元素。但是使用 PG::TextEncoder::Array.new.encode(a)
会产生以下结构:
"{alpha,bravo,charlie}"
...这是一个对象 (.class)。我得到的不正确结果是没有找到任何记录,这是错误的。
如何将 Ruby
数组作为第一个 PG
参数放入其中?
更新:
我一直在使用:
...AND NOT (mytable.field = ANY ())
其中 </code> 是这样的:</p>
<pre><code>PG::TextEncoder::Array.new(elements_type: PG::TextEncoder::String.new)
在 PG::TypeMapByColumn.new
实例中。那里的 Ruby
数组是有效的,包含一个值。在此示例中,它是数组中的单元素字符串,将在我的 SQL 语句中使用。一切都很好,但它不起作用。如果我真的看到发送到 db
的 SQL 语句,那将会有所帮助。这里隐藏了太多。
我找到了答案:...AND NOT hashtag = ANY ()...
其中 $1 是正确的 Ruby
array
。 PG gem
人实际上并不支持它。
我需要从数组中搜索 id 字段。我正在使用 PG
gem,所以我想我应该使用 TextEncoder::Array.new.encode(myarray)
来推入合格列表。 PostgreSQL
结构如下:
SELECT id FROM tablename WHERE fieldname IN ('alpha', 'bravo', 'charlie')
所以我在 Ruby
中的起始数组是 ['alpha', 'charlie', 'bravo']
,所以这是我当前的语法:
a = ['alpha', 'bravo', 'ccharlie']
b = $conn.exec_params( %Q{ SELECT id FROM tablename WHERE fieldname IN ( ) }, [ PG::TextEncoder::Array.new.encode(a) ] )
puts b.inspect
exec_params
显然需要一个数组,即使它是单个数组元素。但是使用 PG::TextEncoder::Array.new.encode(a)
会产生以下结构:
"{alpha,bravo,charlie}"
...这是一个对象 (.class)。我得到的不正确结果是没有找到任何记录,这是错误的。
如何将 Ruby
数组作为第一个 PG
参数放入其中?
更新:
我一直在使用:
...AND NOT (mytable.field = ANY ())
其中 </code> 是这样的:</p>
<pre><code>PG::TextEncoder::Array.new(elements_type: PG::TextEncoder::String.new)
在 PG::TypeMapByColumn.new
实例中。那里的 Ruby
数组是有效的,包含一个值。在此示例中,它是数组中的单元素字符串,将在我的 SQL 语句中使用。一切都很好,但它不起作用。如果我真的看到发送到 db
的 SQL 语句,那将会有所帮助。这里隐藏了太多。
我找到了答案:...AND NOT hashtag = ANY ()...
其中 $1 是正确的 Ruby
array
。 PG gem
人实际上并不支持它。