Nowości w SQL Server 2012 – funkcje konwertujące

2012-04-20 

Język T-SQL w najnowszej wersji SQL Server został wzbogacony o szereg nowych funkcji. W tym wpisie zajmę się trzema funkcjami służącymi do konwersji typów danych:

  • PARSE
  • TRY_PARSE
  • TRY_CONVERT

PARSE

Funkcja PARSE służy do konwersji ciągu znaków na inny typ, w przypadku niepowodzenia operacji zgłaszany jest błąd.

PARSE(string_value AS data_type [USING culture])

string_value – ciąg znaków do skonwertowania
data_type – docelowy typ danych
culture – opcjonalne wskazanie ustawień regionalnych w jakich sformatowany jest ciąg znaków, domyślnie używane są ustawienia bieżącej sesji

--Ok
select PARSE('2011/01/01' as datetime)

--Error converting string value into data type using culture ''.
select PARSE('100,00 zł' as money)
select PARSE('01 styczeń 2012' as datetime)

--Ok
select PARSE('100,00 zł' as money using 'Pl-PL')
select PARSE('01 styczeń 2012' as datetime using 'Pl-PL')
select PARSE('2012 sty 15' as datetime using 'Pl-PL')

TRY_PARSE

Funkcja TRY_PARSE działa tak samo jak PARSE ale w przypadku niepowodzenia operacji zwracany jest NULL.

TRY_PARSE(string_value AS data_type [USING culture])

string_value – ciąg znaków do skonwertowania
data_type – docelowy typ danych
culture – opcjonalne wskazanie ustawień regionalnych w jakich sformatowany jest ciąg znaków, domyślnie używane są ustawienia bieżącej sesji

--NULL
select TRY_PARSE('100,00 zł' as money)
select TRY_PARSE('01 styczeń 2012' as datetime)

TRY_CONVERT

Funkcja TRY_CONVERT działa podobnie jak TRY_PARSE ale pozwala na konwersję z innych typów niż ciąg znaków, w przypadku niepowodzenia operacji zwracany jest NULL. W przypadku próby niedozwolonej konwersji (np. z typu INT na DATE) zgłaszany jest błąd.

TRY_CONVERT(data_type, value [, style])

data_type – docelowy typ danych
value – wartość do skonwertowania
style – opcjonalne wskazanie formatu danych wyjściowych, działa analogicznie jak w dotychczasowej funkcji CONVERT

--Ok: 20120420
select TRY_CONVERT(varchar(8), GetDate(), 112)

--NULL
select TRY_CONVERT(money, 'test')

--Explicit conversion from data type int to date is not allowed.
select TRY_CONVERT(date, 1)

Więcej informacji o nowościach w SQL Server 2012: MSDN 

Reklamy

Posted on 2012-04-20, in SQL Server and tagged , , , . Bookmark the permalink. Dodaj komentarz.

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj / Zmień )

Zdjęcie na Facebooku

Komentujesz korzystając z konta Facebook. Wyloguj / Zmień )

Zdjęcie na Google+

Komentujesz korzystając z konta Google+. Wyloguj / Zmień )

Connecting to %s

%d blogerów lubi to: