所以我有一个包含2个表,电影和PS3的数据库。 每个都包含标题。 我从基于视频游戏的IMDB标题列表中获得了电影标题。并非所有人都拥有与他们所基于的游戏相同的头衔,但可能会有一两个相似的词。
我想知道如何在ps3上使用标题并将其与电影进行比较。 我想退回类似的项目。
例如,“生化危机:天启”是一部电影,没有一款名为“生化危机:启示录”的游戏,但PS3上的生化危机游戏有不同的名字,所以想获得这些数据。
我怎么能这样做?我试着做了
WHERE ps3.titles LIKE '%movie.titles%'
但它不起作用。 我甚至不确定它是否可以在MySQL中使用。 感谢您的任何反馈
答案 0 :(得分:2)
整体匹配是一项艰巨的任务。但就语法而言,请考虑一下:
WHERE ps3.titles LIKE CONCAT('%',movie.titles,'%')
MySQL会将movie.title
视为标识符(例如,作为对查询中引用的表中列的引用)。 '%'
是文字,CONCAT
将文字与列中的值相结合,然后可以评估LIKE比较运算符。
关闭弦的比较是整个大的粘球蜡。
就MySQL中可用的内容而言,它非常有限。
MyISAM引擎具有FULLTEXT
个索引,这对于通过“关键字”匹配查找行非常有用。 (对于将被索引并被视为“匹配”的字符串的长度存在下限限制。我认为默认值为4个字符,这消除了诸如“A”,“of”和“the”之类的字。)
MySQL还有REGEXP
比较运算符,它比LIKE
比较运算符更强大;但你必须手动制作自己的比较。
SOUNDEX
功能对于识别“近距离”匹配也很有用......就像将“启示录”与“Apokalyps”匹配一样;但我认为这不会帮助你将“启示录”与“倒带:启示录编年史”相提并论。
只是标题上的任何匹配都是有限的,并且是不精确的。你会得到一些比赛,你得到的比赛越多,就越不正确。