Php MySQL数据库中应该使用什么数据类型来存储2个文本文件的代码。如果我以后打算比较相似性

Php MySQL数据库中应该使用什么数据类型来存储2个文本文件的代码。如果我以后打算比较相似性,php,mysql,windows,Php,Mysql,Windows,MySQL数据库中应该使用什么数据类型来存储2个文本文件的代码。如果我以后打算比较相似性 这是一个在我的Windows机器上运行的MySQL数据库 您还可以为我推荐一个可以比较代码的API。根据 VARCHAR列中的值是可变长度字符串。长度可以指定为0到65535之间的值。VARCHAR的有效最大长度取决于最大行大小(65535字节,在所有列中共享)和使用的字符集 CHAR和VARCHAR列中的值根据指定给该列的字符集排序规则进行排序和比较 因此,VARCHAR与表内联存储,而BLOB和文本类

MySQL数据库中应该使用什么数据类型来存储2个文本文件的代码。如果我以后打算比较相似性

这是一个在我的Windows机器上运行的MySQL数据库

您还可以为我推荐一个可以比较代码的API。

根据

VARCHAR列中的值是可变长度字符串。长度可以指定为0到65535之间的值。VARCHAR的有效最大长度取决于最大行大小(65535字节,在所有列中共享)和使用的字符集

CHAR和VARCHAR列中的值根据指定给该列的字符集排序规则进行排序和比较

因此,VARCHAR与表内联存储,而BLOB和文本类型则存储在表外,数据库保存数据的位置。根据文本的长度,文本可以定义为TINYTEXT、text、MEDIUMTEXT和LONGTEXT,唯一的区别是它所保存的最大数据量

  • TINYTEXT 256字节
  • 文本65535字节
  • MEDIUMTEXT 16777215字节
  • 长文本4294967295字节
要存储在文本(或任何其他字符串列)中,您可能需要使用STRCMP(expr1,expr2)

如果字符串相同,则STRCMP()返回0;根据当前排序顺序,如果第一个参数小于第二个参数,则返回1;否则返回1

如果您指定所需的比较输出,我可能会编辑答案

编辑

要比较两个字符串并计算差异百分比,您可能需要使用
similor\u text
。作为正式文件:

这将计算两个字符串之间的相似性,如Oliver在《编程经典:实现世界上最好的算法》(ISBN 0-131-00413-1)中所述。注意,这个实现不像Oliver的伪代码那样使用堆栈,而是使用递归调用,这可能会加快整个过程,也可能不会。还要注意,该算法的复杂度为O(N**3),其中N是最长字符串的长度


TEXT
可能吗?虽然
VARCHAR
可以保存MySQL v5.0.3以后版本中的65535个字符,但在MySQL 5.0.3之前,长度可以指定为0到255,在5.0.3及更高版本中,长度可以指定为0到65535。MySQL 5.0.3及更高版本中VARCHAR的有效最大长度取决于最大行大小(65535字节,在所有列中共享)和使用的字符集。当您在php变量中保存字符串时,该变量在MySQL中的类型(VARCHAR或text等)是否重要?因为我正在这样做,如果没有关系,那么我最终用来比较代码/字符串的php API将与我最初在mysql中存储的代码无关。这一点的关键是,我需要为一个项目指定mysql数据库中存储的不同代码之间的相似度百分比。逻辑将在PHP中完成。字符串的大小无关紧要,因为它们不会有很多行。我想知道mysql的类型是否重要,但现在我发现它并不重要。