mysql字串區分大小寫的問題

2021-08-28 20:53:48 字數 2555 閱讀 4863

一、

1、 create table name(name varchar(10));

對這個表,預設情況下,下面兩個查詢的結果是一樣的:

select * from table name where name='clip';

select * from table name where name='clip';

mysql預設查詢是不區分大小寫的,如果需要區分他,必須在建表的時候,binary標示敏感的屬性.

create table name(

name varchar(10)binary

);2、 在sql語句中實現 select * from table name wherebinaryname='clip';

3、 設定字符集:

utf8_general_ci--不區分大小寫

utf8_bin--區分大小寫

二、 mysql在windows下是不區分大小寫的,將script檔案匯入mysql後表名也會自動轉化為小寫,結果再 想要將資料庫匯出放到linux伺服器中使用時就出錯了。

因為在linux表名區分大小寫而找不到表,查了很多都是說在linux下更改mysql的設定使其也不區分大小寫,但是有沒有辦法反過來讓windows 下大小寫敏感呢。

其實方法是一樣的,相應的更改windows中mysql的設定就行了。

具體操作:

在mysql的配置檔案my.ini中增加一行:

lower_case_table_names = 0

其中 0:區分大小寫,1:不區分大小寫

mysql在linux下資料庫名、表名、列名、別名大小寫規則是這樣的:

1、資料庫名與表名是嚴格區分大小寫的;

2、表的別名是嚴格區分大小寫的;

3、列名與列的別名在所有的情況下均是忽略大小寫的;

4、變數名也是嚴格區分大小寫的; mysql在windows下都不區分大小寫

當我們輸入不管大小寫都能查詢到資料,例如:輸入 aaa 或者aaa ,aaa都能查詢同樣的結果,說明查詢條件對大小寫不敏感。

解決方案一:

於是懷疑mysql的問題。做個實驗:直接使用客戶端用sql查詢資料庫。 發現的確是大小不敏感 。

通過查詢資料發現需要設定collate(校對) 。 collate規則:

*_bin: 表示的是binarycase sensitivecollation,也就是說是區分大小寫

*_cs:case sensitivecollation,區分大小寫

*_ci: case insensitive collation,不區分大小寫

解決方法一:

1.可以將查詢條件用binary()括起來。 比如: 

select * from tablea where binary columna ='aaa';

2. 可以修改該字段的collation 為 binary

比如:alter table tablename modify column columnname varchar(50) binary character set utf8collate utf8_bindefault null;

解決方案二:

mysql查詢預設是不區分大小寫的 如:

select * from some_table where str=『abc';

select * from some_table where str='abc';

得到的結果是一樣的,如果我們需要進行區分的話可以按照如下方法來做: 

第一種方法:

要讓mysql查詢區分大小寫,可以:

select * from some_table where binary str='abc'

select * from some_table where binary str='abc'

第二種方法:

在建表時時候加以標識

create table some_table(

str char(20) binary 

)原理:

對於char、varchar和text型別,binary屬性可以為列分配該列字符集的 校對規則。

binary屬性是指定列字符集的二元 校對規則的簡寫。

排序和比較基於數值字元值。因此也就自然區分了大小寫。

以上通過兩種方案解決了mysql查詢不區分大小寫的問題,希望對大家有所幫助,更多有mysql資料查詢問題,請登入本站學習。

mysql字串區分大小寫的問題

1 create table name name varchar 10 對這個表,預設情況下,下面兩個查詢的結果是一樣的 select from table name where name clip select from table name where name clip mysql預設查詢是不...

mysql字串區分大小寫的問題

一 1 create table name name varchar 10 對這個表,預設情況下,下面兩個查詢的結果是一樣的 select from table name where name clip select from table name where name clip mysql預設查詢...

mysql字串區分大小寫的問題

一 1 create table name name varchar 10 對這個表,預設情況下,下面兩個查詢的結果是一樣的 select from table name where name clip select from table name where name clip mysql預設查詢...