我有一个字典数据库,其中每个小家伙都是这样的
column
word; synonym; synonym | example of usage; example of usage
我想创建一个select函数,只有当它出现在数据的第一部分(单词和同义词)而不是在使用示例中时才会获取该行(因为那里有更多的单词)
我一直试图用REGEXP
来做SELECT * FROM dictionary WHERE column REGEXP '[^\|]*word.*\|.*'
但由于某些原因,这与表格中的所有内容相符 - 即使这个词根本没有出现。
我做错了什么?
答案 0 :(得分:1)
你需要使用双斜杠来转义MySQL正则表达式中的特殊字符。因此,您的\|
被视为|
,并且您在每个"字符"之前匹配每个空格。在每个字符串中。
我建议您在word
之前检查|
是否显示
'^[^|]*word'
或 - 如果您需要一个完整的单词检查:
'^[^|]*[[:<:]]word[[:>:]]'
正则表达式匹配......
^
- 字符串开头[^|]*
- 除|
[[:<:]]
- 领先的字边界word
- 文字字母序列[[:>:]]
- 尾随字边界。此外,默认情况下,此正则表达式不区分大小写。要使其区分大小写,请使用BINARY
关键字。
SELECT * FROM dictionary WHERE column REGEXP BINARY '^[^|]*[[:<:]]word[[:>:]]'
答案 1 :(得分:0)
我做错了什么?
您没有数据库。您有3种类型的信息(单词,同义词,用法)一行卡在一列中。
你需要一个单词表 - 同义词对
你需要一个单词表 - 用法对
你可能需要一个单词 - 定义对表
在将数据插入表格之前,先进行所有解析。