当前位置: 首页 > 知识库问答 >
问题:

yii2-在字符串字段中搜索数字的活动记录查询

唐烨煜
2023-03-14

我的表中有一个字符串字段,其中包含一个json字符串。让我们命名tbl_表

假设它有以下3条记录:

id    json
----------------
1     [123,45,1]
2     [23,4,5]
3     [7,8,9]

现在我想获取在json字段中包含数字的记录(使用Yii2中的活动记录),因此:

$res = Table::find()->where(['like','json','23'])->all();

此查询返回以下记录:

id    json
----------------
1     [123,45,1]
2     [23,4,5]

这实际上不是一个错误的结果,但我只想返回id=2的记录。我该怎么做?

那么对于['like'、'json'、'5']['like'、'json'、'4']等等?数字是相似的,但我希望确切的数字是匹配的。

另一个问题,我想要最后一个问题的答案,在这部分有变化['like','json',[4,5,6]]。换句话说,我想传递一个数组给like运算符,它会自动对每个元素进行OR操作。可能吗?如果没有,我怎么能迭代数组,并使多个Or_like条件与最后一个问题的功能没有多查询执行?

共有1个答案

仉刚洁
2023-03-14

使用表达式使用mysql函数,使用JSON函数

use yii\db\Expression;
$expression = new Expression('JSON_CONTAINS(fied, value)');
$now = (new \yii\db\Query)->select($expression);  

p. sjson_contains从版本MySQL 5.7开始

裁判https://dev.mysql.com/doc/refman/5.7/en/json-search-functions.html http://www.yiiframework.com/doc-2.0/yii-db-expression.html

 类似资料:
  • 我在Rails3中的MongoDB数据库中有一个名为“Stat”的表。 在该表中,有一个名为“服务”的数组字段。 我尝试了各种各样的东西,并广泛地搜索了它,找到了一些线索,但似乎没有任何工作。我有四条记录应该与此查询匹配,但上面返回的是一个零集。 我想做的事情在Rails3/mongo中可能吗?

  • 问题内容: Elasticsearch版本:7.1.1 嗨,我做了很多尝试,但是在索引中找不到任何解决方案,我有一个包含字符串的字段。 因此,例如,我有两个文档,它们在locations数组中包含不同的值。 文件1: 文件2: 用户请求搜索术语 克洛彭堡, 而我只想返回那些包含术语 克洛彭堡 而不是 Landkreis Cloppenburg的 文档。结果应仅包含 Document-1 。但是我的

  • 本文向大家介绍在Java中搜索字符串中的字符。,包括了在Java中搜索字符串中的字符。的使用技巧和注意事项,需要的朋友参考一下 您可以使用String类的方法在字符串中搜索特定字母。此方法返回字符串中单词的位置索引(如果找到)。否则返回-1。 示例 输出结果

  • 我有一个包含以下两个字段的Lucene 3.6.0索引(每个字段下面都有示例数据): 字段由多个代码字符串组成,例如“CHP-13724”或“RPS-204979”。 所以:在字段中,由于某种原因,它无法找到空格分隔的字符串,除非它是第一个字符串,并且在查询中使用了通配符,但是在company字段中,无论字符串出现在哪里,并且不使用通配符,它都可以找到。 编辑:字段使用not_analysis进行

  • 本文向大家介绍MongoDB查询如何在字段值中搜索类似“@email”的字符串,包括了MongoDB查询如何在字段值中搜索类似“@email”的字符串的使用技巧和注意事项,需要的朋友参考一下 使用MongoDB find()搜索电子邮件字符串。让我们创建一个包含文档的集合- 在find()方法的帮助下显示集合中的所有文档- 这将产生以下输出- 以下是查询@email的查询,例如字符串- 这将产生以

  • 问题内容: 如何搜索以关键字开头的字符串数组? 例如, 当我的搜索字符串必须显示时 当我的搜索字符串是那么。 问题答案: 交换为您只希望寻找遏制。