查询数据库中包含法语口音的单词
Query database for a word containing French accent
我的数据库中有一个 table 与这个相似
id | name | email
-----------------------------------------
1 | elie | elie@company.com
2 | jénifer | jenifer@company.com
3 | jenny | jenny@company.com
如您所见,ID=2 的记录的名称中包含法语字符。当 运行 这个 SQL
SELECT * FROM `TABLENAME` WHERE `name` LIKE '%jé%'
我希望只看到 ID=2 的记录。相反,我得到 ID=2 & ID=3。 SQL 将法语字符“é”替换为 "e"。
我的数据库,table 和字段有 Collation=utf8_general_ci
在这种情况下,如果我还需要将法语字符保存在我的数据库中,我应该怎么做才能得到正确的结果?
我发现它在 mysql 5.1
中存在已知错误
[1 Nov 2010 8:52] Peter Laursen
So you may create the table like this
CREATE TABLE test (
id INT AUTO_INCREMENT,
vers TEXT,
PRIMARY KEY (id)
) CHARACTER SET utf8 COLLATE utf8_danish_ci;
或这个
CREATE TABLE `test` (
`id` INT (11) NOT NULL AUTO_INCREMENT,
`vers` TEXT CHARACTER SET utf8 COLLATE utf8_danish_ci,
PRIMARY KEY (`id`)
) ENGINE = INNODB DEFAULT CHARSET = utf8;
或
使用此处记录的 COLLATE 子句编写查询:
http://dev.mysql.com/doc/refman/5.0/en/charset-collate.html
请注意,LIKE 运算符不支持 COLLATE。它执行但被忽略。
SELECT 'a' LIKE 'å' COLLATE utf8_danish_ci; -- '0'
(我认为我自己或文档请求至少会报告为错误)
为此使用 REGEXP
SELECT * FROM `TABLENAME` WHERE `name` REGEXP '.*é.*'
LIKE 会忽略变音符号,而 REGEXP 不会。
我的数据库中有一个 table 与这个相似
id | name | email
-----------------------------------------
1 | elie | elie@company.com
2 | jénifer | jenifer@company.com
3 | jenny | jenny@company.com
如您所见,ID=2 的记录的名称中包含法语字符。当 运行 这个 SQL
SELECT * FROM `TABLENAME` WHERE `name` LIKE '%jé%'
我希望只看到 ID=2 的记录。相反,我得到 ID=2 & ID=3。 SQL 将法语字符“é”替换为 "e"。
我的数据库,table 和字段有 Collation=utf8_general_ci
在这种情况下,如果我还需要将法语字符保存在我的数据库中,我应该怎么做才能得到正确的结果?
我发现它在 mysql 5.1
中存在已知错误[1 Nov 2010 8:52] Peter Laursen So you may create the table like this
CREATE TABLE test (
id INT AUTO_INCREMENT,
vers TEXT,
PRIMARY KEY (id)
) CHARACTER SET utf8 COLLATE utf8_danish_ci;
或这个
CREATE TABLE `test` (
`id` INT (11) NOT NULL AUTO_INCREMENT,
`vers` TEXT CHARACTER SET utf8 COLLATE utf8_danish_ci,
PRIMARY KEY (`id`)
) ENGINE = INNODB DEFAULT CHARSET = utf8;
或
使用此处记录的 COLLATE 子句编写查询: http://dev.mysql.com/doc/refman/5.0/en/charset-collate.html
请注意,LIKE 运算符不支持 COLLATE。它执行但被忽略。
SELECT 'a' LIKE 'å' COLLATE utf8_danish_ci; -- '0'
(我认为我自己或文档请求至少会报告为错误)
为此使用 REGEXP
SELECT * FROM `TABLENAME` WHERE `name` REGEXP '.*é.*'
LIKE 会忽略变音符号,而 REGEXP 不会。