Cautare numere lipsa in coloana

Avem nevoie uneori sa gasim valorile lipsa (sau plaja de valori lipsa dintr-o coloana de tip integer)

Pt aceasta situatie am creat un script care parcurge o coloana de tip INTEGER si intoarce valorile lipsa din aceasta coloana , mai exact intoarce, pt fiecare serie de numere lipsa, numarul de start  al seriei lipsa, numarul de sfarsit al seriei lipsa si lungimea seriei care lipseste.

In scriptul de mai jos trebuie doar sa inlocuiti NUMELE TABELEI si NUMELE COLOANEI din tabela respectiva.

Cele doua locuri in care se fac inlocuirile sunt marcate cu comentarii pt a fi vizibile.

[mai mult...]

Generator de parole

Sunt cazuri in care avem nevoie sa punem parole pt diferite servicii (sau chiar si pt useri cu drepturi mai mari) si vrem sa fie o parola care sa fie puternica si sa nu fie usor de spart.

In cazul in care nu avem inspiratie , am creat in TSQL un generator de parole care primeste urmatorii parametri:

@useNumbers   de tip bit   – daca are valoarea 1 se vor folosi numere la generarea parolei, daca are valoarea 0 nu se vor folosi numere la generarea parolei

@useLowerCase de tip bit – daca are valoarea 1 se vor folosi litere mici la generarea parolei, daca are valoarea 0 nu se vor folosi litere mici la generarea parolei

@useUpperCase de tip bit – daca are valoarea 1 se vor folosi litere mari la generarea parolei, daca are valoarea 0 nu se vor folosi litere mari la generarea parolei

@charactersToUse de tip varchar – daca se pune null se vor folosi toate literele alfabetului, daca nu se doreste asta se poate pune un string din care se vor alege caracterele pt generarea parolei

@specialCharacters de tip bit – daca are valoarea 1 se vor folosi si caractere speciale la generarea parolei, daca are valoarea 0 nu se vor folosi caractere speciale

@passwordLength de tip int – lungimea parolei

 

Procedura are inca un parametru de tip OUT si se apeleaza astfel:

declare @a varchar(10)    — unde @a este lungimea parolei
EXEC BD_GeneratorParola 1,1,1,null, 1, 10,@a OUT
PRINT @a

[mai mult...]

Disable sql logins

Avem nevoie uneori sa dam disable rapid la toti logins de sql , mai putin la cei care sunt sysadmin, pentru diferite operatiuni de mentenanta sau mai grav, pentru cazul in care ceva a fost alterat gresit in baza si e nevoie de un restore.

Pentru aceasta situatie am facut procedura de mai jos.

[mai mult...]

Top 10 tabele dupa dimensiune

Pentru cazurile in care avem nevoie sa aflam care sunt tabelele cu cea mai mare dimensiune dintr-o baza am facut o procedura care returneaza acest top in functie de un parametru, @rows.

Daca @rows = 1 atunci se returneaza top 10 in functie de numarul de linii din tabela.

Daca @rows = 0 atunci se returneaza top 10 in functie de dimensiunea (exprimata in kb) tabelelor.

[mai mult...]

Cautare a n-a cea mai mica\mare valoare

Uneori avem nevoie sa cautam intr-o coloana de timp integer / numeric / decimal   maximul sau minimul valorii din acea coloana. Solutia este simpla in acest caz, pentru ca vom scrie un query ca acesta:

select min(Coloana) from tabela

sau

select max(Coloana) from tabela

dupa caz.

Dar ce ne facem daca avem nevoie sa gasim a doua valoare ca marime, sau a treia, etc ?

[mai mult...]

Cautare dupa un caracter special intr-o coloana

Limbajul T-SQL are o serie de caractere speciale ce pot fi folosite in diverse situatii.

Problema apare cand avem nevoie sa cautam, intr-o coloana de tip textvarchar dupa unul sau mai multe dintre aceste caractere. Sa luam ca exemplu caracterul special %  care in T-SQL este partial similar cu LIKE.

Daca, spre exemplu, vrem sa cautam intr-o tabela, pe coloana NUME, toate numele care se termina cu -escu, vom scrie un query de genul:

select * from tabela where NUME like ‘%escu’

care va returna toate numele care se termina exact cu escu.

Pe de alta parte, daca, spre exemplu vrem sa cautam toate numele care contin stringul stan (ex: Stanescu, Constantin) o sa scriem un query de genul:

select * from tabela where upper(NUME) like ‘%stan%’

care va returna toate numele ce contin stan (si care nu va tine cont de caractere mici sau mari).

Dar ce se intampla daca avem o coloana ce contine caracterul special si avem nevoie sa cautam caracterul % ?

[mai mult...]

Cum aflam numarul de cuvinte dintr-un text

Pentru cazurile in care avem nevoie sa aflam numarul cuvintelor dintr-un text sau coloana.

Am conceput o functie ce numara cate cuvinte sunt intr-un text ce este primit ca parametru de functie (care desigur, poate fi si o coloana de tip text dintr-o tabela). Eu am avut nevoie de o asemenea functie in momentul in care a trebuit sa trimitem scrisori catre clienti, si plata catre furnizor se facea (si) in functie de numarul de cuvinte.

[mai mult...]

Determinare an bisect

M-am lovit de multe ori de situatia in care aveam nevoie sa calculez numarul de zile din an (pt a calcula dobanda pana la sfarsitul anului sau pt tot felul de operatii) si de fiecare data trebuia sa stiu daca anul este bisect sau nu. Pentru aceasta am facut o functie care primeste ca parametru o data calendaristica si calculeaza daca anul corespunzator acelei date calendaristice este sau nu bisect.

[mai mult...]

Cautare specific cod in textul tuturor procedurilor de pe o baza

Am avut nevoie deseori sa gasesc o procedura in care stiam ca am scris un anumit cod, fie pentru a o modifica, fie pentru a copia ceva din ea si a-mi simplifica astfel munca.

Pentru aceasta am facut o procedura ce cauta in codul tuturor procedurilor din baza pe care este rulata o anumita bucata de cod care este data ca parametru.

Procedura are trei parametri:

1. @text1 – prima bucata de cod care este cautata in codul tuturor procedurilor (este obligatoriu ca acest prim parametru sa nu fie null)

2. @text2 – a doua bucata de cod ce este cautata in codul tuturor procedurilor (acest parametru poate fi null)

3. @Si – este un parametru care functioneaza DOAR cand al doilea parametru nu este null si , daca are valoarea 0, atunci procedura cauta in codul tuturor procedurilor o bucata de cod la fel ca primul parametru SAU ca al doilea,
iar daca are valoarea 1 atunci cauta in codul tuturor procedurilor o bucata de cod la fel ca prim,ul parametru SI o bucata de cod la fel ca al doilea parametru

Procedura nu tine cont de litere mici sau litere mari la parametri sau in cod, pt ca m-am gandit ca este foarte putin probabil sa stiu exact daca am scris acea portiune de cod cu litere mari, mici, sau combinate…

Ca atare am preferat sa nu o complic si cu un parametru de CASE SENSITIVE.

[mai mult...]

Cautare coloana in toate tabelele

Avem nevoie uneori sa cautam o coloana intr-o baza de date. Fie pt ca nu mai stim in ce tabela era acea coloana pe care ne-o amintim, fie ca vrem sa vedem daca acea coloana mai este folosita si in alte tabele fata de cea in care stim ca se afla.

Pentru aceasta am facut o procedura care are doi parametri @ColumnName si  @CaseSensitive.

Procedura returneaza , din baza curenta, toate tabelele care contin coloana data in primul parametru.
Dupa cum spuneam procedura are doi parametri:
1. @ColumnName = numele coloanei ce este cautat in toate tabelele din baza pe care se ruleaza procedura
2. @CaseSensitive = daca este 1 numele coloanei trebuie sa fie exact asa cum este scris, pe cand, daca este 0, atunci nu se tine cont de caractere mici sau mari

Precizare: al doilea parametru se poate folosi doar daca baza pe care se ruleaza procedura este setata ca fiind CS (Case sensitive). In cazul in care baza pe care se ruleaza procedura este setata CI (case insensitive) , indiferent daca la parametrul  @CaseSensitive se alege 0 sau 1 procedura nu va tine cont de felul in care e scris primul parametru.

 

[mai mult...]