find in set
时间: 2023-08-25 13:09:15 浏览: 78
Oracle中没有find_in_set函数,但可以使用REGEXP_LIKE函数来实现类似的功能。例如:
SELECT * FROM table_name WHERE REGEXP_LIKE(column_name, 'value1|value2|value3');
这将返回column_name中包含value1、value2或value3的所有行。
相关问题
findinset使用
函数 FIND_IN_SET(str, strlist) 是 MySQL 中的一个内置函数,用于在字符串列表中查找给定字符串出现的位置。
具体用法如下:
FIND_IN_SET(str, strlist)
其中,str 是要查找的字符串,strlist 是以逗号分隔的字符串列表。
如果在 strlist 中找到 str,返回 str 在 strlist 中的位置;如果没找到,返回 0。
例如,如果要在字符串列表 'apple,banana,orange' 中查找字符串 'banana',可以使用以下语句:
SELECT FIND_IN_SET('banana', 'apple,banana,orange');
执行结果为 2,表示 'banana' 在列表中的位置是第二个。如果要查找的字符串不在列表中,返回 0,例如:
SELECT FIND_IN_SET('pear', 'apple,banana,orange');
执行结果为 0,表示 'pear' 不在列表中。
find in set怎么用
`FIND_IN_SET` 函数用于在逗号分隔的字符串中查找某个值。它的语法如下:
```
FIND_IN_SET(search_value, list_of_values)
```
其中,`search_value` 是要查找的值,`list_of_values` 是逗号分隔的字符串。如果 `search_value` 在 `list_of_values` 中,返回值是 `search_value` 在 `list_of_values` 中的位置;否则返回值是0。
示例:
```
SELECT FIND_IN_SET('apple', 'apple,banana,orange') AS result;
```
这个语句会返回 1,表示在 `'apple,banana,orange'` 中找到了 `'apple'`。
在比较两列逗号分隔的字符串时,可以使用 `FIND_IN_SET` 函数来逐个比较两列中的每个字段。例如:
```
SELECT *
FROM table_name
WHERE (
SELECT COUNT(*) FROM (
SELECT * FROM (
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(column_1, ',', n), ',', -1) AS value
FROM table_name INNER JOIN (
SELECT 1 + units.i + tens.i * 10 AS n
FROM (
SELECT 0 i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9
) units, (
SELECT 0 i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9
) tens
) N
ON CHAR_LENGTH(column_1)
- CHAR_LENGTH(REPLACE(column_1, ',', ''))
>= N.n - 1
WHERE primary_key = 'xxx'
ORDER BY n
) T
GROUP BY value
) X
) <> (
SELECT COUNT(*) FROM (
SELECT * FROM (
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(column_2, ',', n), ',', -1) AS value
FROM table_name INNER JOIN (
SELECT 1 + units.i + tens.i * 10 AS n
FROM (
SELECT 0 i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9
) units, (
SELECT 0 i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9
) tens
) N
ON CHAR_LENGTH(column_2)
- CHAR_LENGTH(REPLACE(column_2, ',', ''))
>= N.n - 1
WHERE primary_key = 'xxx'
ORDER BY n
) T
GROUP BY value
) Y
);
```
这个 SQL 语句会比较 `column_1` 和 `column_2` 中的每个字段,如果两列中的某个字段不相同,就返回该行。其中,`primary_key` 是表中的主键列名,`xxx` 是要比较的主键值。
阅读全文