MySQL删除与表列匹配的所有单词

时间:2015-09-11 03:43:55

标签: mysql sql regex string replace

我想写一个存储过程/功能来删除所有性别'字符串中的单词。我将所有可能的性别词保留在表格列(gender_aliases.alias)中。一些样本值:

男性

男装

男子39; S

先生们' S

一个字符串的例子可能是男士的黑色T恤',我希望存储过程返回黑色T恤'。重要的是,它必须尊重字边界。即如果输入字符串是'元素'我不想返回Elet'。

我有查询找到所有匹配的性别别名,我相信它很快:

SELECT alias
FROM gender_aliases
WHERE MATCH (alias) AGAINST (myInputString) 

但是我在编写单词边界敏感的REPLACE时遇到困难,要从输入字符串中删除所有结果。

谢谢! :)

1 个答案:

答案 0 :(得分:0)

这是一个regexp_replace用户定义函数。

尝试使用它,但你需要知道如何在mysql中编写正则表达式

user function fo replacing using regex

更新

另一个方法:

您在字符串

中有性别位置的变化

1)genger [空格]文本

2)文本[空格]性别[空格]文本

3)文本[空格]性别

所以你需要在字符串的开头和结尾添加一个空格。

喜欢这个

CONCAT('[space]',text,'[space]')

现在您可以使用以下参数运行replace函数:

[space]gender[space]

例如:

UPDATE table
SET field = REPLACE(CONCAT('[space]',text,'[space]'),'[space]genger[space]','');