MSSQL verzija MySql funkcije NOW()
Problem:
Zanima nas MSSQL funkcija slična MySql funkciji NOW()
Rješenje:
SELECT GETDATE()
Problem:
Zanima nas MSSQL funkcija slična MySql funkciji NOW()
Rješenje:
SELECT GETDATE()
Problem:
Spajanje dvaju polja u jedno npr. prilikom SELECTA, dakle MSSQL verzija MySql funkcije CONCAT
http://systasis.biz/blog/?p=45
Rješenje:
SELECT ime + ' ' + prezime as korisnik FROM tbl_osobe
Problem:
Kreirati element, npr. div kroz javascript
Rješenje:
var mojDiv= document.createElement("div");
mojDiv.id = "testDiv";
mojDiv.style.display = "none";
... ostali parametri koji nam trebaju ...
document.body.appendChild(mojDiv);
Problem:
Kako pozvati funkciju “unutar jquery-a” iz javascripta koji nije “unutar jquery-a”?
Rješenje:
Pa zapravo je prvo potrebno definirati što znači “unutar jquery-a”?
ako pod time mislimo na neku funkciju koja se nalazi unutar
$(function() {
});
ili
$(document).ready(function(){
});
onda, koliko znam, nikako.
ALI!
Mnogi pogrešno misle da se jquery može koristiti samo unutar gore navedenog koda. Gore navedeni kod je samo funkcija koja se izvršava “when dom is ready”.
dakle, npr, ovo će raditi:
$(function() {
});
function test(){
alert($('#pero').html());
}
<div onclick="test()" id="pero">Proba</div>
Klikom na tekst ‘Proba’ okida se funkcija koja alerta html elementa ‘pero’. A ta funkcija test() nije “unutar jquery-a” (kako smo to pogrešno nazvali).
Problem:
Trebamo duplicirati neku tablicu zajedno s podacima, npr. radi backupa i sl.
Rješenje:
SELECT * INTO tbl_backup FROM tbl_tablica
Ovo kopira strukturu i podatke. Na žalost morat ćemo ručno podesiti defaultne vrijednosti, primary i sl., ali data type polja i podatke uredno kopira.
Ako želimo samo strukturu bez podataka onda ide npr.
SELECT TOP 0 * INTO tbl_backup FROM tbl_tablica
Problem:
SQL error kod inserta u polje koje je označeno kao identity
Cannot insert explicit value for identity column in table ‘tbl_x’ when IDENTITY_INSERT is set to OFF
Rješenje:
SET IDENTITY_INSERT tbl_x ON
Problem:
U bazi imamo polje datetime, a na ispisu nam treba samo datum
Rješenje:
SELECT convert(varchar(10),mojDatetime,104) as samoDatum
rezultat: 29.10.2011
U kojem će formatu izaći datum ovisi o zadnjem parametru (ovdje 104). Više o formatima ovdje:
http://linesofcode.net/snippets/45
http://msdn.microsoft.com/en-us/library/ms187928.aspx
Međutim, što ako nam datum ne treba na ispisu (u gornjem primjeru dobijemo datum kao varchar) nego za računanje. Tada može pomoći:
SELECT CAST(FLOOR( CAST( mojDatetime AS FLOAT ) )AS DATETIME) as samoDatum
MSSQL – samo datum iz datetime 2
mojDatetime
Problem:
Kod MySql-a koristeći GROUP BY funkciju možemo selektirati neka dodatna polja uz ono polje po kojem grupiramo.
npr.
SELECT ime, prezime, grad FROM tbl_adresar GROUP BY grad
Dobit ćemo rezultate grupirane po polju grad, ali i jedno od imena i prezimena koje stoje uz neki od tih rezultata.
Ako isto pokušamo napraviti u MSSQL dobit ćemo ovakav error:
Column 'tbl_adresar.ime' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Ako bi query preradili na gore sugerirani način:
SELECT ime, prezime, grad FROM tbl_adresar GROUP BY grad, ime, prezime
Nebi dobili grešku, ali ni rezultat kakav očekujemo jer nas ne zanima grupiranje po imenu nego samo po gradu.
Rješenje:
Upotreba neke od MSSQL aggregate funkcije kod polja koja nisu grupirana.
min() bi možda moglo biti dobro rješenje.
SELECT min(ime), min( prezime), grad FROM tbl_adresar GROUP BY grad
Rezultat je sličan rezultatu dobivenom kod MySQL-a.
Grupirano po gradu, ali ispisuje i jedno ime i prezime koje u navedenu grupu pripada.
Problem:
Treba naći podatke u bazi koji se pojavljuju više od jednom. Dakle u pitanju je rješavanje duplića.
Rješenje:
SELECT ime, COUNT(ime) AS BrojPojavljivanja FROM tbl_tablica GROUP BY ime HAVING ( COUNT(ime) > 1 ) ORDER BY BrojPojavljivanja DESC
Ok.. s time smo riješili traženje duplikata… ali kako ih maknuti, a da pri tome ne dobijemo probavne probleme?!
Gore navedeni query nam je rekao koji je podatak u pitanju i koliko ima istih, s time da je i onaj prvi koji nam treba u tom broju…
Slijedi jedan malo “seljačkiji” query ali nekako najpraktičniji za rješavanje ovih problema u kućnoj radinosti
SELECT * FROM tbl_tablica WHERE id > ( SELECT min(id) FROM tbl_tablica x WHERE x.ime = tbl_tablica.ime )
Ovim queryjem smo selektirali podatke samo onih redova koji su nam višak. Unutar queryja se ne nalazi ono jedno pojavljivanje koje nam treba nego samo duplikati tog jednog koji su nam višak.
Brisanje?
DELETE FROM tbl_tablica WHERE id > ( SELECT min(id) FROM tbl_tablica x WHERE x.ime = tbl_tablica.ime )
:)
Problem:
Problem je broj pojavljivanja karaktera ili stringa unutar stringa. Zadatak je prebrojati sva slova “a” unutar nekog teksta.
Rješenje:
x = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec volutpat vestibulum dolor, eget condimentum nibh rutrum volutpat. Duis vitae orci sit amet turpis ornare adipiscing. Vivamus vel dolor sit amet nisl lobortis aliquam nec eget turpis. Etiam quis massa libero, eget cursus urna. Nam nec tempus neque." BrojPojavljivanja = UBound(Split(x, "a")) response.write(BrojPojavljivanja)