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
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
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:
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ć'
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;
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
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…
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
Problem:
Napraviti query gdje je vrijednost polja LIKE vrijednost drugog polja
Rješenje:
SELECT fieldName1, fieldName2 FROM tableName WHERE fieldName1 LIKE CONCAT('%', fieldName2, '%')
fieldName1