MYSQL,在查询中忽略空白、标点、替换重音

MYSQL,在查询中忽略空白、标点、替换重音,mysql,punctuation,Mysql,Punctuation,我需要一种方法来使用我的字典,省名缩写,全名和地区,而不必为安大略省每一个可能的拼写错误添加条目。 表如下: state |name | territory =================================== AB Alberta West "Ontario," "ON," "ON" "On" " Ontario" "Ontario " " Ontario " Quebec Québec QU QB Quebec, 数据如下

我需要一种方法来使用我的字典,省名缩写,全名和地区,而不必为安大略省每一个可能的拼写错误添加条目。 表如下:

state       |name     | territory
===================================
AB           Alberta   West
"Ontario,"
"ON,"
"ON"
"On"
" Ontario"
"Ontario "
" Ontario "


Quebec
Québec
QU
QB
Quebec,
数据如下:

state       |name     | territory
===================================
AB           Alberta   West
"Ontario,"
"ON,"
"ON"
"On"
" Ontario"
"Ontario "
" Ontario "


Quebec
Québec
QU
QB
Quebec,

只是一个想法,知道它不能用于所有数据库。
无论如何:使用
怎么样
从表中选择*,其中的名称如“%anthontario%”

只是一个想法,知道它不能用于所有数据库。
无论如何:使用
怎么样
从表中选择*,该表中的名称(如“%ontario%”)

对于您眼前的问题不是一个真正的答案,但这正是规范化的目的。为省创建另一个表,然后将其链接到原始表,而不是允许自由格式文本


另一种方法是,在输入端添加一个触发器,以确保所收集数据的一致性。(至少修剪空格,使其全部变高,可能检查有效条目等等)

对于您眼前的问题来说,这不是一个真正的答案,但这正是规范化的目的。为省创建另一个表,然后将其链接到原始表,而不是允许自由格式文本


另一种方法是,在输入端添加一个触发器,以确保所收集数据的一致性。(至少要修剪空格,使其位于上方,可能要检查有效的条目等等)

对于OP来说有点晚,但是对于其他尝试进行松散匹配搜索的人,请查看STRCMP()和SOUNDEX(),如下所述:


对于OP来说有点晚了,但是对于其他尝试进行松散匹配搜索的人,请查看STRCMP()和SOUNDEX(),如下所述:


@Randy:我以为LIKE以不区分大小写的方式比较字符串,但也许我wrong@Randy:我认为LIKE以不区分大小写的方式比较字符串,但可能我错了