May 9 2011

MySql: LENGTH

Problem:

Odabrati iz tablice samo rezultate gdje je duljina rezultata veća od 10 karaktera

Rješenje:

 SELECT myField FROM myTable WHERE LENGTH(myField)>10

Apr 29 2011

MySql: CAST

Problem:

Coldfusion 9 ponekad javlja grešku ako mysql datum  prilikom prikazivanja ne pretvorimo u string. Greška obično glasi:

ByteArray objects cannot be converted to strings

Rješenje:

Tome možemo dostočiti na dva načina:

1. Tako da dobiveni rezultat pretvorimo u string pomoći toString() naredbe

<cfoutput>#toString(RS.myDate)#</cfoutput>

2. Tako da već prilikom SQL selecta pretvorimo datum u string

SELECT CAST(DATE_FORMAT(datum,"%d.%m.%Y") as CHAR)  AS myDate FROM ...

Na isti način možemo pretvoriti string u broj, string u datum itd:

MySql CAST functions and operators


Apr 29 2011

MySql: CONCAT

Problem:

Trebamo spojiti dva polja prilikom pretrage. Npr. ime i prezime

Rješenje:

SELECT * from tablica WHERE CONCAT(ime," ",prezime) = 'Pero Perić'

CONCAT možemo upotrijebiti i kod select-a:

SELECT CONCAT(ime," ",prezime) as korisnik  from tablica WHERE CONCAT(ime," ",prezime) = 'Pero Perić'

Apr 19 2011

MySql: mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication

Problem:
Prilikom spajanja na mysql bazu php javlja grešku u konekciji:

mysqlnd cannot  connect to MySQL 4.1+ using the old insecure authentication. Please use  an administration tool to reset your password with the command SET  PASSWORD = PASSWORD('your_existing_password'). This will store a  new, and more secure, hash value in mysql.user. If this user is used in  other scripts executed by PHP 5.2 or earlier you might need to remove  the old-passwords flag from your my.cnf file

Rješenje:
Updejtamo stari password istim takvim pomoću sljedeće naredbe:

UPDATE mysql.user SET Password=PASSWORD('lozinka') WHERE User='korisnik';

FLUSH PRIVILEGES;

Apr 14 2011

MySql: “if null then zero”

Problem:

Query nam vraća null, a nama treba nula

Rješenje:

1. IFNULL

SELECT IFNULL(fieldName, 0) as fieldName FROM... 

2.COALESCE

SELECT COALESCE(fieldName, 0) as fieldName FROM... 

COALESCE je zanimljiv iz još jednog razloga. Recimo da u bazi osoba imamo osim imena i prezimena također i podatke o službenom i privatnom telefonu i mobitelu.
Budući da COALESCE traži prvu pojavu vrijednosti koja nije null na sljedeći način možemo pretraživati više polja:
COALESCE(sluzbeni_telefon, privatni_telefon, službeni_mobitel, privatni_mobitel, ‘Nema kontakt telefona’)
Ako postoji službeni telefon selektirat će ga, a ako ne prelazi na privatni.
Ako ni on ne postoji prelazi na službeni mobitel itd…
ako ništa od navedenog ne postoji ispisuje ‘nema kontakt telefona’…

Kako riješiti problem praznog stringa kod funkcije COALESCE ?

Evo jednog od rješenja: http://systasis.biz/blog/?p=89


Apr 10 2011

MySQL: UPDATE tablice bez primary key-a

Vjerojatno i mali šmrkljavi Miro iz 6-tog B zna da UPDATE tablice bez primary key-a redovno dovodi do nepredviđenih i nimalo poželjnih rezultata.

Izgleda da nekima ni 7 godina prakse nije dovoljno da to nauče!

Dakle, kakav kreten!

Al dobro… rano je…


Apr 6 2011

MySql: pronalaženje duplikata

Problem:

Kako saznati koji se podaci u koloni pojavljuju više od jednom

Rješenje:

SELECT * FROM tableName GROUP BY fieldName1, fieldName2 HAVING COUNT(*)>1

Apr 5 2011

MySql: polje LIKE drugo polje

Problem:

Napraviti query gdje je vrijednost polja LIKE vrijednost drugog polja

Rješenje:

SELECT fieldName1, fieldName2 FROM tableName WHERE fieldName1 LIKE CONCAT('%', fieldName2, '%')
fieldName1