我有一个只有一个名为"tag“的字段的表,它是一个varchar(250)
该字段定义为排序规则‘latin1_ save _ci’,因为我计划用西班牙语保存单词...
问题是下面的查询
select * from test where tag = 'unó'
给出的结果与
select * from test where tag = 'uno'
也就是说,对于mysql,'uno‘= 'unó'...还有“unó”和“unö”..。等等。
此字段假定具有唯一的关键字...
我尝试了其他排序规则,所有的"bin“排序规则似
我一直在使用世界数据库(InnoDB)发现的,以获得对MySQL的更多了解。
我输入了以下基本查询:
SELECT COUNT(Name), MIN(Name), MAX(Name)
FROM Country
GROUP BY Continent
似乎MIN()和MAX()对名称中的CHAR字符串的处理方式是按字母顺序排列的,其中A是最小值,Z是最大值,依此类推。
谁能解释一下在幕后发生了什么,以及字符串被赋予了什么值,以便以这种方式进行排序?同时包含字母字符和整数或特殊字符的字符串会发生什么情况?
非常感谢你的洞察力。
我有一个多语言平台。我需要它根据mysql连接的优先排序规则对结果进行排序。不是通过mysql结构的整理。
在不重写每个查询的情况下可以这样做吗?我不想以每次查询中的示例order by name asc collate utf8_swedish_ci结束。
set names utf8 collate utf8_swedish_ci不像utf8_general_ci那样按照b之前的结果顺序工作。
我知道标题的措辞很糟糕,但我想不出更好的说法。
我正在学习Ruby,并在MySQL上提神。我使用一个已完成航班的历史列表作为实践数据集,大约有100,000行要处理。每一次飞行记录包括起始机场和目的地机场(字段“原产地”和“最优”)和总飞行距离(字段“距离”)。
作为一个练习,我想展示按距离下降排序的10条最长的路线。然而,我想把每对端点看作一个单一的路径,而不管哪个是起源,哪个是目的地。因此,例如,JFK和LAX应该被认为是一条单一的路由。
当我运行查询时:
SELECT DISTINCT distance, origin, dest FROM flights ORDER BY distan
我有一个html表单,它在发布时执行Mysql数据库中的SQL字符串,如下所示:
SELECT *
FROM IpProvider, IpUsers
WHERE IpProvider.UserId = IpUsers.Id AND
(IpProvider.CompanyName LIKE '%køb%' OR IpProvider.ShortDescrip LIKE '%køb%')
这将返回0行,但应返回1行(因为丹麦语单词"køb“是ShortDescrip中文本的一部分)。此搜索适用于不包含丹麦语字符的其他文本字符串。
直接从表字段复
好的,我检查过了,似乎没有人问过这个问题。
所以我有两个词:
thiep cuoi
thiệp cưới
问题是,当我计算()时,这些mysql会将这两者合并为相同的值。例如,下面的sql:
#lets assume these two words have an id of 1 and 2 and that the column name
#in the table is `word`
SELECT `word`, COUNT(`word`)
FROM table_name
WHERE `id` IN(1,2)
GROUP BY `word`;
将返回两个词作为一行,计数为2。通过UTF
我创建了一个表,并将排序规则设置为utf8,以便能够向字段添加唯一索引。现在我需要执行不区分大小写的搜索,但是当我使用collate关键字执行一些查询时,我得到了:
mysql> select * from page where pageTitle="Something" Collate utf8_general_ci;
错误1253 (42000):归类'utf8_general_ci‘对字符集'latin1’无效
mysql> select * from page where pageTitle="Something" Coll
有两种情况:
使用默认排序规则:
CREATE TABLE IF NOT EXISTS `table` (
`name` varchar(255) collate utf8_general_ci NOT NULL,
UNIQUE KEY `name` (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
SELECT `name` FROM `table` ORDER BY `name`;
使用COLLATE
CREATE TABLE IF NOT EXISTS `table` (
`name` varchar(255) collate u
我想在我的MySQL查询中自定义字母排序顺序。马耳他语使用标准拉丁字母和字符:ċ,ġ,ħ和ż。我使用utf8_bin排序规则,因为ċ与c(以此类推)不一样。这样做的结果是,当我使用ORDER BY时,字母按以下顺序处理:
a b c d e f g h i j k l m n o p q r s t u v w x y z ċ ġ ħ ż
然而,我要求他们有这样的命令:
a b ċ c d e f ġ g h ħ i j k l m n o p q r s t u v w x y ż z
这意味着按照升序,"abċ“应该出现在"abz”之前,但现在是在后面,因为它只是比较字符的
我试着做一张登记表。当用户发布字段时,我检查USER_NAME。如果存在,则不会将该行实例到MYSQL。
发布后:
$check = "SELECT name FROM test WHERE name='".$_POST['user_name']."';
$result = mysql_query($check) or die (mysql_error());
$numrows = mysql_num_rows($resutl);
if ($numrow != 0){
echo "exist"; e
我正在尝试将一些mysql表从latin1转换为utf8。我正在使用下面的命令,它似乎基本上是有效的。
ALTER TABLE tablename CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
然而,在一个表中,我得到了一个关于重复键条目的错误。这是由"name“字段上的唯一索引引起的。似乎当转换为utf8时,任何“特殊”字符都被索引为其直接的英语对等字符。例如,已经有一个名称字段值为"Dru“的记录。转换为utf8时,带有"Drü“的记录被视为重复记录。“帕特里克”和“帕特里克”也是如此。
以下是如何重现