mysql-database可以像UNIX一样保存字符串区分大小写吗?

时间:2009-12-10 15:58:16

标签: mysql unix case-sensitive

是否可以在mysql-database中存储“Filename”和“filename”?

3 个答案:

答案 0 :(得分:4)

我假设你的意思是,将'Filename'和'filename'存储在具有UNIQUE约束的列中(例如PRIMARY KEY)?

如果是,那么是的,但是你必须告诉MySQL在CREATEALTER表时使用区分大小写的排序规则。这可以使用VARCHAR(...) COLLATE some_collation_cssee)或仅VARCHAR(...) BINARY完成。

答案 1 :(得分:2)

  

是否可以在mysql-database中存储“Filename”和“filename”?

如果您要插入的列是UNIQUE,请确保其排序规则区分大小写:

CREATE TABLE t_ci (test VARCHAR(50)  PRIMARY KEY COLLATE latin1_swedish_ci);

INSERT
INTO    t_ci
VALUES
('Filename'),
('filename');

-- Fails

CREATE TABLE t_cs (test VARCHAR(50)  PRIMARY KEY COLLATE utf8_bin);

INSERT
INTO    t_cs
VALUES
('Filename'),
('filename');

- Succeeds

答案 2 :(得分:0)

在存储字符串时,MySQL将始终保留大小写。

当您搜索字符串时,它通常会进行不区分大小写的搜索。这取决于排序规则,但默认值不区分大小写。

要进行区分大小写的搜索,您可以更改排序规则:

SELECT x FROM table WHERE y LIKE '%Filename%' COLLATE latin1_general_cs

有关详细信息,请参阅case sensitivity