mysql中 某个字段的内容为用逗号拼接的字符串,那么如何判断拼接的字符串中包含某个值
时间: 2023-10-27 21:24:03 浏览: 45
可以使用 `FIND_IN_SET()` 函数来判断拼接的字符串中是否包含某个值。该函数的第一个参数是需要查找的值,第二个参数是用逗号拼接的字符串。
例如,假设有一张表 `test`,其中有一个字段 `tags` 存储了用逗号拼接的标签名称,我们需要查找包含标签名称为 `tag1` 的记录,可以使用以下 SQL 语句:
```
SELECT * FROM test WHERE FIND_IN_SET('tag1', tags) > 0;
```
这条语句会返回所有 `tags` 字段中包含 `tag1` 的记录。注意:使用 `FIND_IN_SET()` 函数可能会影响查询效率,如果可能的话,最好将字段拆分成多个单独的字段来存储。
相关问题
querywrapper怎么对mysql字段中的字符串先进行分割后再逐一进行区间判断
如果您要对MySQL字段中的字符串进行分割后再逐一进行区间判断,可以使用MySQL的内置函数`find_in_set`。具体实现方法如下:
假设您要对MySQL字段`field`中的字符串进行分割后再逐一进行区间判断,判断条件为分割后的每个字符串在[min, max]之间,代码如下:
```
String str = "1,2,3,4,5,6,7,8,9,10";
int min = 3;
int max = 8;
QueryWrapper wrapper = new QueryWrapper();
wrapper.apply("false", Arrays.stream(str.split(",")).map(s -> "find_in_set('" + s + "', field) and field between " + min + " and " + max).collect(Collectors.joining(" or ")));
```
以上代码中,我们首先将字符串`str`通过逗号分隔符转换为数组,然后使用`find_in_set`函数将每个元素都拼接成一个`find_in_set`条件,最后使用`and`将条件连接起来,同时加上`between`条件,生成如下的SQL语句:
```
SELECT * FROM table WHERE false or find_in_set('1', field) and field between 3 and 8 or find_in_set('2', field) and field between 3 and 8 or find_in_set('3', field) and field between 3 and 8 or find_in_set('4', field) and field between 3 and 8 or find_in_set('5', field) and field between 3 and 8 or find_in_set('6', field) and field between 3 and 8 or find_in_set('7', field) and field between 3 and 8 or find_in_set('8', field) and field between 3 and 8 or find_in_set('9', field) and field between 3 and 8 or find_in_set('10', field) and field between 3 and 8;
```
这样就可以对MySQL字段中的字符串进行分割后再逐一进行区间判断了。需要注意的是,由于`apply`方法中的第一个参数需要传入一个SQL的片段,为了避免生成无用的SQL语句,我们在这里传入了一个永远为`false`的条件。
mysql 字符串拼接
在MySQL中,有几种方法可以进行字符串拼接。首先是使用CONCAT函数,它可以将多个字符串拼接在一起,形成一个新的字符串。例如,CONCAT('Hello', ' ', 'World')将返回'Hello World'。其次是CONCAT_WS函数,它与CONCAT类似,但是可以指定一个分隔符将多个字符串连接起来。例如,CONCAT_WS(', ', 'Apple', 'Banana', 'Orange')将返回'Apple, Banana, Orange'。最后是GROUP_CONCAT函数,它可以将多行数据中的字段进行拼接,并使用指定的分隔符进行分隔。例如,GROUP_CONCAT(name SEPARATOR ', ')将返回一个以逗号分隔的多个name字段值的字符串。