在 gorm 中,如何转义 postgres 中的 '?` 运算符?

Adi*_*tya 5 postgresql go jsonb go-gorm

假设我有一个表“testing”,其中有一列“agents”,类型jsonb为存储代理名称数组

> SELECT * FROM testing;
+--------------------------------------+---------------------+
| id                                   | agents              |
|--------------------------------------+---------------------|
| 018d17a4-5418-1f87-f702-3ed8325f4d11 | ["mikel", "arsene"] |
+--------------------------------------+---------------------+
Run Code Online (Sandbox Code Playgroud)

我可以使用?运算符来查找将字符串作为代理之一的记录。

> SELECT * FROM testing WHERE agents ? 'mikel'
+--------------------------------------+---------------------+
| id                                   | agents              |
|--------------------------------------+---------------------|
| 018d17a4-5418-1f87-f702-3ed8325f4d11 | ["mikel", "arsene"] |
+--------------------------------------+---------------------+
Run Code Online (Sandbox Code Playgroud)

然而,在 gorm 中,?也充当占位符。所以我无法将查询形成为

> SELECT * FROM testing;
+--------------------------------------+---------------------+
| id                                   | agents              |
|--------------------------------------+---------------------|
| 018d17a4-5418-1f87-f702-3ed8325f4d11 | ["mikel", "arsene"] |
+--------------------------------------+---------------------+
Run Code Online (Sandbox Code Playgroud)

将产生原始查询

> SELECT * FROM testing WHERE agents ? 'mikel'
+--------------------------------------+---------------------+
| id                                   | agents              |
|--------------------------------------+---------------------|
| 018d17a4-5418-1f87-f702-3ed8325f4d11 | ["mikel", "arsene"] |
+--------------------------------------+---------------------+
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用@>运算符来实现此目的,但我想知道如何具体使用?运算符