Php SQL查找存在术语但不在括号中的值

Php SQL查找存在术语但不在括号中的值,php,mysql,sql,regex,Php,Mysql,Sql,Regex,是否有任何方法可以搜索在值中但不在括号中的术语 示例:假设我们搜索Bob: 鲍勃(不是鲍勃)-正确 鲍勃(蒂姆)-对 蒂姆(鲍勃)-忽略 鲍勃(鲍勃)-对 您可能会使用mysql函数: CREATE FUNCTION CheckForTerm (items VARCHAR(255)) RETURNS bit(1) BEGIN DECLARE sf_result BIT DEFAULT 0; SELECT count(*) from table where items in @item

是否有任何方法可以搜索在值中但不在括号中的术语

示例:假设我们搜索Bob:

鲍勃(不是鲍勃)-正确

鲍勃(蒂姆)-对

蒂姆(鲍勃)-忽略

鲍勃(鲍勃)-对


您可能会使用mysql函数:

CREATE FUNCTION CheckForTerm (items VARCHAR(255))
RETURNS bit(1)

BEGIN

 DECLARE sf_result BIT DEFAULT 0; 

 SELECT count(*) from table where items in @item

 SET sf_result = 1;

 RETURN sf_result ;

END
未经测试:

SELECT INSTR('myteststring','Bob') and not(INSTR('myteststring','(Bob)')); 

如果bob在括号中,即使第二个条件为真,它也将失败,如果不是,两个条件都为真,因此返回值

what?,您能否澄清表中的数据?。显示一个示例数据和期望的结果会更好。MySQL支持@Lamak Select*,比如“bob不在括号中”这样的名字。Bob(Bob)是正确的,但Tim(Bob)不会。@robotmayo我们的意思是“修正你的问题”,我怀疑一个非贪婪的正则表达式会起作用,正如@mistermartin所说。你能试试吗,OP?我不熟悉函数,但这会检查字符串是否在括号中吗?你需要在函数中增加一个查询来分割内容,沿着一个非常fnSplit(在互联网上)的路线,它基于CSV列表创建一个列表,然后执行一个IF EXIST。如上所述,该函数允许您根据项目的存在返回“true/false”。
SELECT INSTR('myteststring','Bob') and not(INSTR('myteststring','(Bob)')); 
 SELECT * FROM table WHERE column NOT LIKE '%(Bob)%' AND column LIKE '%Bob%'