Kategorie: Programowanie

Funkcje w MS SQL 2012

Cześć! Cieszę się, że mnie odwiedziłeś/aś. Zanim przejdziesz do artykułu chciałbym zwrocić Ci uwagę na to, że ten artykuł był pisany kilka lat temu (2013-06-10) miej więc proszę na uwadzę że rozwiązania i przemyślenia które tu znajdziesz nie muszą być aktualne. Niemniej jednak zachęcam do przeczytania.

3 proste przykłady funkcji w MS SQL 2012.

1 przykład to własna implementacja funkcji Replicate (lekka zmiana założenia nieco jednak różni ją od Replicate).

Funkcja generuje n „*”, gdzie n jest przekazywane w parametrze. Kod:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
CREATE FUNCTION repl
(
  @param1 INT

)
RETURNS nvarchar(255)
AS
BEGIN

  DECLARE @i INT=0;

  DECLARE @w AS nvarchar(255)=''

  WHILE( @i<@param1 )
  BEGIN
      SET @w= CONCAT(@w,'*')
      SET @i=@i+1
  END

  RETURN @w
END

Druga funkcja zwraca wszystkie możliwie wystąpienia litery w podanym stringu w formie jednokolumnowej tabeli.
Kod:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
ALTER FUNCTION indexess
(
  @param1 nvarchar(255),
  @param2 nvarchar
)
RETURNS @q TABLE (Occ INT)
AS
BEGIN


  DECLARE @i INT=1
  WHILE( @i<= len(@param1) )
  BEGIN
     
      IF SUBSTRING(@param1,@i,1) = @param2
      BEGIN
          INSERT INTO @q VALUES(@i)
      END
      SET @i=@i+1

  END
  RETURN
END

Ostatni przykład to dość abstrakcyjna funkcja która odwraca dwa stringi (reverse) i łączy je przeplatając ich znaki.

Wejście: abcdefghij i 0123456789
Wyjście: j9i8h7g6f5e4d3c2b1a0

Kod:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
ALTER FUNCTION absss
(
  @a nvarchar(10),
  @b nvarchar(10)
)
RETURNS nvarchar(20)
AS
BEGIN

DECLARE @wynik nvarchar(20)=''
DECLARE @aa nvarchar(10) = reverse(@a)
DECLARE @bb nvarchar(10) = reverse(@b)
DECLARE @i INT=0


      WHILE( @i <= len(@aa) )
      BEGIN

          SET @wynik = concat(@wynik,SUBSTRING(@aa,@i,1) , SUBSTRING(@bb,@i,1))
          SET @i=@i+1

      END

  RETURN @wynik

END

Enjoy ;)

Dzięki za wizytę,
Mateusz Mazurek
Mateusz M.

Ostatnie wpisy

Podsumowanie: luty i marzec 2024

Ostatnio tygodnie były tak bardzo wypełnione, że nie udało mi się napisać nawet krótkiego podsumowanie. Więc dziś zbiorczo podsumuję luty… Read More

2 tygodnie ago

Podsumowanie: styczeń 2024

Zapraszam na krótkie podsumowanie miesiąca. Książki W styczniu przeczytałem "Homo Deus: Historia jutra". Książka łudząco podoba do wcześniejszej książki tego… Read More

3 miesiące ago

Podsumowanie roku 2023

Cześć! Zapraszam na podsumowanie roku 2023. Książki Zacznijmy od książek. W tym roku cel 35 książek nie został osiągnięty. Niemniej… Read More

3 miesiące ago

Podsumowanie: grudzień 2023

Zapraszam na krótkie podsumowanie miesiąca. Książki W grudniu skończyłem czytać Mein Kampf. Nudna książka. Ciekawsze fragmenty można by było streścić… Read More

4 miesiące ago

Praca zdalna – co z nią dalej?

Cześć, ostatnio w Internecie pojawiło się dużo artykułów, które nie były przychylne pracy zdalnej. Z drugiej strony większość komentarzy pod… Read More

4 miesiące ago

Podsumowanie: listopad 2023

Zapraszam na krótkie podsumowanie miesiąca. Książki W listopadzie dokończyłem cykl "Z mgły zrodzony" Sandersona. Tylko "Stop prawa" mi nie do… Read More

5 miesięcy ago