tp 查询逗号分割的字符串 FIND_IN_SET
时间: 2023-10-12 22:04:47 浏览: 169
如果您想在逗号分割的字符串中使用类似于MySQL中的FIND_IN_SET函数进行查询,可以使用以下方法:
```python
def find_in_set(item, string):
items = string.split(",")
if item in items:
return True
return False
string = "apple,banana,orange"
item = "banana"
result = find_in_set(item, string)
print(result)
```
输出:
```
True
```
在这个例子中,`find_in_set`函数接受一个要查找的元素和一个逗号分割的字符串作为参数。它将字符串拆分成一个列表,并检查要查找的元素是否在列表中。如果找到了,则返回`True`,否则返回`False`。
您可以根据需要调用`find_in_set`函数,并传入相应的要查找的元素和逗号分割的字符串。
希望这可以帮助到您!如果您还有其他问题,请随时提问。
相关问题
TP5 查询 字符串条件如何实现 当查询条件是 (1,3,8) 被查询的值是(2,3,4),两个字符串 中有一个相同的就查出来
如果需要查询两个字符串中有一个相同的值,可以使用 `exp` 方法和 `like` 条件来构建查询。例如,如果查询条件为 `(1,3,8)`,被查询的字段为 `field`,可以这样构建查询:
```php
$ids = '1,3,8';
$list = Db::name('table')
->where(function($query) use ($ids) {
$query->where('find_in_set(field, :ids)', ['ids' => $ids])
->whereOr('field', 'like', '%,'.$ids.',%')
->whereOr('field', 'like', $ids.',%')
->whereOr('field', 'like', '%,'.$ids);
})
->select();
```
其中,`find_in_set(field, :ids)` 表示在 `field` 字段中查找值为 `:ids` 的值,`:ids` 是绑定查询参数的占位符。`whereOr` 方法用于构建或逻辑条件,`%` 表示匹配任意字符,`,` 表示逗号分隔的字符串列表中的分隔符。这样构建的查询,如果被查询的字段中包含 `(1,3,8)` 中的任意一个值或多个值,都会被查询出来。
TP5 查询 字符串条件如何实现 当查询条件是 (1,3,8) 数据库字段也是(2,3,4) 这种情况改如何查询呢?
在 ThinkPHP 5 中,可以使用 `exp` 方法来实现查询字符串条件。例如,如果查询条件为 `(1,3,8)`,数据库字段为 `(2,3,4)`,可以这样构建查询:
```php
$ids = '1,3,8';
$list = Db::name('table')
->where('find_in_set(field, :ids)', ['ids' => $ids])
->select();
```
其中,`find_in_set(field, :ids)` 表示在 `field` 字段中查找值为 `:ids` 的值,`:ids` 是绑定查询参数的占位符。
如果查询条件为字符串 `1,3,8`,可以使用 `exp` 方法构建查询:
```php
$ids = '1,3,8';
$list = Db::name('table')
->where('field in ' . Db::raw("( $ids )"))
->select();
```
其中,`Db::raw` 方法用于将字符串转换为原始查询语句,避免字符串中的 `,` 被解析为查询语句中的分隔符。
阅读全文