Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 5 odgovora
  • 3.146 pregleda

Najnovija ↓

Case sensitivity 28.08.2010. u 16:01 · pre 196 meseci #1
Molim vas, kako da ukljucim case-sens u MySQL konekciji?

da ova dva upita na primer ne daju isti rezultat:

Code:
SELECT * FROM countries WHERE name='serbia';

Code:
SELECT * FROM countries WHERE name='Serbia';
Potpis
I don't need a girl for sex , All I Need is Binary and HEX
Re: Case sensitivity 28.08.2010. u 16:25 · pre 196 meseci #2
upotrebite binarnu kolaciju, ona je case sensitive
Code:

mysql> select 'ABC' = 'abc';
+---------------+
| 'ABC' = 'abc' |
+---------------+
|             1 | 
+---------------+
1 row in set (0.00 sec)

mysql> select 'ABC' = 'abc' collate latin1_bin ;
+----------------------------------+
| 'ABC' = 'abc' collate latin1_bin |
+----------------------------------+
|                                0 | 
+----------------------------------+
1 row in set (0.00 sec)



COLLATE mozete da koristite kada hocete to samo u nekim slucajevima, ako hocete uvek, samo napravite da su polja koja hocete da pretrazujete case sensitive u kolaciji koja je binarna (ili u _cs kolaciji ... dakle ili *_bin ili *_cs). Dostupne kolacije vidite sa "show collation;"
Potpis
arhimed
http://www.mysql.rs/ | http://elco.crsndoo.com/
Sviđa mi se2
Re: Case sensitivity 29.08.2010. u 13:57 · pre 196 meseci #3
Znaci moram pri svakom upitu... mogu za npr celu konekciju da stavim COLLATE binarni ili npr na celu bazu ili tabelu?
Potpis
I don't need a girl for sex , All I Need is Binary and HEX
Re: Case sensitivity 29.08.2010. u 18:34 · pre 196 meseci #4
Citat:
Milan M. Radovic: Znaci moram pri svakom upitu... mogu za npr celu konekciju da stavim COLLATE binarni ili npr na celu bazu ili tabelu?


NE, NE, DA

kolacije nemaju nikakve veze sa konekcijom, vezane su za podatke. kolaciju setujete u upitu (to je generalno sporije posto generalno kastujete podatak iz jednog tipa u drugi) ili u samoj tabeli (setujete default za bazu, to nasledjuju tabele ako ne navedete explicitno, setujete za tabelu, to nasledjuju atributi (polja) ako ne navedete explicitno - i setujete na kraju za atribute). Svaki atribut moze da ima razliciti karakter set i razlicitu kolaciju. Obratite paznju da promena "visih instanci" nece propagirati promene na nize. Dakle ako je default kolacija baze utf8_bin i vi imate tu neke kreirane tabela, promenom default kolacije necete promeniti nista na postojecim tabelama, samo ce nove implicitno naslediti tu kolaciju dok ce stare ostati kakve su bile.

dakle kako sam napisao ovde:

Citat:
bogdan.kecman: 
COLLATE mozete da koristite kada hocete to samo u nekim slucajevima,


Dakle ako vam treba "samo po nekad" onda koristite COLLATE u sql upitu

Citat:
bogdan.kecman:
ako hocete uvek, samo napravite da su polja koja hocete da pretrazujete case sensitive u kolaciji koja je binarna (ili u _cs kolaciji ... dakle ili *_bin ili *_cs)


Dakle ako hocete da ta polja UVEK poredite case sensitive onda postavite kolaciju koja je case sensitive. Na primer:

Code:

mysql> create table t3 (id int auto_increment primary key not null, f1 char(20) character set utf8 collate utf8_general_ci)engine=myisam;
Query OK, 0 rows affected, 2 warnings (0.00 sec)

mysql> create table t4 (id int auto_increment primary key not null, f1 char(20) character set utf8 collate utf8_bin)engine=myisam;
Query OK, 0 rows affected, 2 warnings (0.01 sec)

mysql> insert into t3 (f1) values ('AAA'), ('Aaa'),('aaa');
Query OK, 3 rows affected (0.00 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> insert into t4 (f1) values ('AAA'), ('Aaa'),('aaa');
Query OK, 3 rows affected (0.00 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> select * from t3 where f1='Aaa';
+----+------+
| id | f1   |
+----+------+
|  1 | AAA  | 
|  2 | Aaa  | 
|  3 | aaa  | 
+----+------+
3 rows in set (0.02 sec)

mysql> select * from t4 where f1='Aaa';
+----+------+
| id | f1   |
+----+------+
|  2 | Aaa  | 
+----+------+
1 row in set (0.01 sec)

mysql> select * from t3 where f1='Aaa' collate utf8_bin;
+----+------+
| id | f1   |
+----+------+
|  2 | Aaa  | 
+----+------+
1 row in set (0.00 sec)

mysql> select * from t4 where f1='Aaa' collate utf8_general_ci;
+----+------+
| id | f1   |
+----+------+
|  1 | AAA  | 
|  2 | Aaa  | 
|  3 | aaa  | 
+----+------+
3 rows in set (0.00 sec)


nadam se da je sada bilo dovoljno jasno
Potpis
arhimed
http://www.mysql.rs/ | http://elco.crsndoo.com/
Re: Case sensitivity 30.08.2010. u 08:19 · pre 196 meseci #5
Ako je polje u tabeli binarno onda će i sortiranje biti case sensitive.
Potpis
"Common sense is not so common." - Voltaire
Re: Case sensitivity 30.08.2010. u 09:32 · pre 196 meseci #6
Excelent :) Hvala VAM a LOT! :D:D:D:D
Potpis
I don't need a girl for sex , All I Need is Binary and HEX
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme