我有一个返回 VARCHAR 的函数。
它将始终为空字符串“”或单个ID“1”或ID“1,2,3,4,5”。
然后我有了这个问题:
SELECT id, title FROM category WHERE id IN getIds(1);
但它只返回第一项,因为它是一个字符串,例如。 1,而不是1,2,3。
有没有办法告诉MySQL它应该不使用它作为字符串?
答案 0 :(得分:1)
由于MySQL不支持表值函数。你有两个选择:
1)使用FIND_IN_SET https://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_find-in-set AND http://www.w3resource.com/mysql/string-functions/mysql-find_in_set-function.php"此函数返回函数的第一个参数中给出的字符串的位置,在逗号分隔的列表中给出的字符串第二个论点。列表的第一个元素是1.如果在集合中找不到字符串,则返回0。如果任一参数为NULL,则返回NULL。"
SELECT id, title FROM category WHERE FIND_IN_SET(id, getIds(1)) > 0
2)填充临时表并将其与IN
运算符
SELECT id, title FROM category WHERE id IN (SELECT Id FROM myTempTable)
方法#1似乎更适合这种情况。