草庐IT

mysql - 如何区分数据库表中的行?

我有一些记录需要存储在数据库表中,我想根据name字段将一条记录与其他记录区分开来。但是由于名称字段的数据类型是varchar,它会影响性能,因为比较varchar数据与数值字段相比是一个耗时的过程。所以我希望每条记录都有一个唯一的数字字段(比如id)。但是如果我将id作为主键,那么多个记录可以包含相同的name。上述问题的解决方案是什么? 最佳答案 您仍然可以在name字段上创建一个UNIQUE约束:ALTERTABLEyour_tableADDUNIQUE(name);UNIQUE约束与PRIMARYKEY约束一样,将保证您的列

php - mysql搜索短语使用不区分大小写的匹配

为了介绍这个问题,mysql文档是这样写的:quotedstringsinMatch/AgainstclauseareCaseSensitive...我的数据:INSERTINTOtable.colVALUES('thisisacustomphrasetomatch');我的查询:SELECT*FROMtableWHEREMATCH(col1,..,col10)AGAINST('"CustomPhrase"'INBOOLEANMODE)由于大小写不匹配。我正在寻找一种以不区分大小写的方式使用此查询的方法这些短语都与数据匹配的东西:“自定义短语”“自定义短语”“自定义短语”“自定义短语”

php - 为列推进区分大小写的 phpNames

我的schema.xml的相关部分:...以下命令因PropelException而失败:UserQuery::create()->filterByActive(true)->update(array('FailedLogins'=>0,'LockedOut'=>false));错误:[SatNov1916:28:012011][error][client127.0.0.11]PHPFatalerror:Uncaughtexception'PropelException'withmessage'CannotfetchColumnMapforundefinedcolumnphpName:

mysql - 寻找不区分大小写的 MySQL 排序规则,其中 "a"!= "ä"

我正在寻找适用于UTF8的MySQL排序规则,它不区分大小写并区分“a”和“ä”(或者更一般地说,区分变音/重音字符和它们的“纯”形式)。utf8_general_ci做前者,utf8_bin做后者,botnone做两者。如果没有这样的排序规则,我该怎么做才能在WHERE子句中尽可能接近? 最佳答案 我的建议是使用utf8_bin并在您的WHERE子句中,将比较的两边都强制为大写或小写。 关于mysql-寻找不区分大小写的MySQL排序规则,其中"a"!="ä",我们在StackOver

MySQL 区分大小写的文本数据外键

我的主表中有英语的ISO639-2语言代码(eng、fre、hin等)作为主键。此列是其他表中的外键。现在我的问题是,即使我的主人只有小写值,但由于人为错误,一些值被添加到其他表中,在混合情况下使用语言ID。虽然有外键,但并没有阻止它的发生。现在这是我第一次在MySQL中工作,之前我在Oracle中工作,它对键应用区分大小写。应该怎么做才能在MySQL中具有相同的功能?另外,列类型应该是什么?现在是varchar(3)。我应该把它转换成别的东西吗?我不会在任何查询中使用任何like条件,仅使用=和in。 最佳答案 发生这种情况是因为

mysql - 如何创建带重音的 Mysql 唯一不区分大小写的索引 - (或使用 NO 排序规则)

我正在与排序规则作斗争。我想在不区分大小写但区分“a”和“à”的单词上建立一个具有唯一索引的表。这意味着“de”和“dé”应该是2个不同的条目,但de、De、DE、dE应该是相同的。是否有一个utf8排序规则可以完成这项工作(似乎不是这样)?有没有办法告诉mysql不要使用任何排序规则?还有其他解决方案吗?我不想把我的话改成小写或大写谢谢 最佳答案 Isthereanutf8collationthatdothejob(itdoesnotseemstobethecase)?MySQL附带的排序规则都不会这样做:utf8_*_ci排序规

mysql - 区分 MySQL 中的多个列

我想找出MySQL数据库中不同行的数量。id|val1|val2|val31|1|1|12|1|1|13|2|2|24|2|2|2在上面的表中,查询将返回val1|val2|val3|count1|1|1|22|2|2|2有谁知道在MySQL中实现此目的的合理有效方法。 最佳答案 您需要使用GROUPBY条款:SELECTval1,val2,val3,count(*)AScountFROMmytableGROUPBYval1,val2,val3Seethisfiddle 关于mysql-

php - 如何检查用户名和密码是否区分大小写?

我制作了一个登录检查脚本,用于检查用户名和密码是否与数据库中设置的帐户相匹配。一切正常,但它不区分大小写,它确实应该是!我该怎么做才能让这个脚本也检查大写/小写?例如:我有一个帐户,用户名:AdMin密码:My43sGG。如果我在登录字段中输入admin和my43sgg,它也可以工作。我的脚本: 最佳答案 使用BINARYWHEREBINARYusername=BINARY'$myusername'ANDBINARYpassword=BINARY'$mypassword'SQLFiddleDemo作为旁注,查询易受SQLInject

mysql - 在 MySQL 中使用区分重音的主键

期望的结果:在MySQL中有一个区分重音的主键。我有一个独特的词表,所以我使用这个词本身作为主键(顺便说一下,如果有人可以给我一个建议,我不知道它是否是一个好的设计/实践)。我需要该字段区分重音(为什么不区分大小写),因为它必须区分,例如,'demandé'和'demande',两个法语动词“需求者”的不同变形。我在数据库中存储带重音的单词没有任何问题。我只是不能插入两个在未重音时相同的重音字符串。错误:尝试使用以下查询创建'demandé'行时:INSERTINTO`corpus`.`token`(`name_token`)VALUES('demandé');我遇到了这个错误:ERR

具有不区分大小写文件系统的 MacOS 上的 MySQL 区分大小写表名

我已经研究了很多,我知道要使数据库表名称敏感,您必须设置变量lower_case_table_names=0。我在osX上。我在my.cnf中做了这个改变。在那之后,如果我跑select*fromusers我得到了结果。如果我运行:select*fromUsers我收到错误消息说表不存在。但是,对于特定的数据库,区分大小写不受影响。我可以使用任何我永远不会收到错误的案例。为什么?我可以查看用于导入数据库的大型sql文件,并尝试找出是否有特定指令忽略区分大小写(?)。无论如何,为什么您认为区分大小写适用于所有数据库而不是我感兴趣的数据库?其中一个区分大小写的是InnoDB。而不关心这一点