SQL 中 WHERE FIND_IN_SET(…)>0 和 WHERE FIND_IN_SET(…) 的区别
FIND_IN_SET(…):此函数返回给定字符串列表中所需字符串的索引(从 1 开始),如果它存在于列表中。如果给定的字符串,则返回 0。
句法:
SELECT FIND_IN_SET(REQUIRED_STRING,
LIST_OF_STRINGS);
FIND_IN_SET(...)>0:此函数仅返回 2 个值,即 1 或 0。如果给定的字符串列表中存在所需的字符串,则返回 1,如果给定的字符串,则返回 0 .
句法:
SELECT FIND_IN_SET(REQUIRED_STRING,
LIST_OF_STRINGS)>0;
会出现以下情况:
- 当 REQUIRED_STRING 出现在给定的 LIST_OF_STRINGS 中时。
询问:
SELECT FIND_IN_SET("STUDENT",
"PARENT,STUDENT,TEACHER");
输出:
询问:
SELECT FIND_IN_SET("STUDENT",
"PARENT,STUDENT,TEACHER")>0;
输出:
- 当给定的 LIST_OF_STRINGS 中缺少 REQUIRED_STRING 时。
询问:
SELECT FIND_IN_SET("PEON",
"PARENT,STUDENT,TEACHER");
输出:
询问:
SELECT FIND_IN_SET("PEON",
"PARENT,STUDENT,TEACHER")>0;
输出:
当所需的字符串或给定的字符串列表为空时,即等于“”,则两个函数都返回 0。同样,当所需的字符串或给定的字符串列表为 NULL 时,两个函数都返回 NULL
因此,我们可以观察到 FIND_IN_SET(...) 和 FIND_IN_SET(...)>0 之间的主要区别是在给定的字符串列表中出现所需的字符串时出现的。在这种情况下,FIND_IN_SET(...)函数返回所需字符串的索引(从 1 开始),而 FIND_IN_SET(...)>0函数返回 1 而与所需字符串的位置无关。