Funkcja SQL PARSE jest funkcją konwersji SQL używaną do konwersji danych typu String na żądany typ danych i zwraca wynik jako wyrażenie. Zaleca się stosowanie funkcji SQL PARSE do konwersji danych łańcuchowych do typu Data lub Liczba.
Składnia funkcji SQL PARSE
Składnia funkcji SQL PARSE jest następująca
PARSE (String_Value AS Data_Type )-- For exampleSELECT PARSE (String_Column_Value AS Data_Type USING 'en-US') AS FROM
- Data_Typ: Typ danych, na który ma zostać przekonwertowana wartość String_Value
- Kultura: Jest to parametr opcjonalny. Domyślnie używany jest język bieżącej sesji.
Funkcja PARSE SQL Przykład 1
Funkcja Parse SQL Server jest głównie używana do konwersji ciągu znaków na datę i czas oraz wartości numeryczne. Poniższe zapytanie funkcji Parse przekształca liczbę całkowitą lub łańcuch znaków na liczbę dziesiętną oraz łańcuch znaków na DateTime.
Jeśli funkcja Parse nie jest w stanie przekonwertować łańcucha znaków na żądany typ danych. Lub jeśli przekażemy nie konwertowalny ciąg znaków, lub jeśli przekażemy wartość NULL, wtedy ta funkcja Parse zwróci błąd.
-- SQL PARSE FUNCTION Example DECLARE @str AS VARCHAR(50)SET @str = '11122'SELECT PARSE(@str AS INT) AS Result; -- Direct InputsSELECT PARSE('1234' AS DECIMAL(10, 2)) AS Result; SELECT PARSE('06/03/2017' AS DATETIME) AS Result; SELECT PARSE('06/03/2017' AS DATETIME2) AS Result;
Konwertujemy wartość ciągu na liczbę całkowitą i używamy kolumny ALIAS w SQL Server, aby nazwać ją jako 'Wynik'.
SELECT TRY_PARSE(@str AS INT) AS Result;
W następnej linii użyliśmy funkcji SQL PARSE bezpośrednio na wartości łańcuchowej i konwertujemy ją do wartości dziesiętnej z precyzją 2
SELECT PARSE('1234' AS DECIMAL(10, 2)) AS Result;
Następnie konwertujemy ciąg do typu danych DateTime i datetime2.
SELECT PARSE('06/03/2017' AS DATETIME) AS Result; SELECT PARSE('06/03/2017' AS DATETIME2) AS Result;
PARSE Funkcja Przykład 2
W tym przykładzie funkcji Parse, będziemy pracować z wartościami NULL i ciągami nie konwertowalnymi.
-- SQL PARSE FUNCTION Example DECLARE @strval AS VARCHAR(50)SET @strval = NULLSELECT PARSE(@strval AS INT) AS Result;
Zastanówmy się, co się stanie, jeśli przekażemy wartość NULL jako bezpośrednie wejście
SELECT PARSE(NULL AS INT) AS Result;
Próbowaliśmy przekonwertować ciąg 'Tutorial Gateway' na czas. Nie jest to możliwe, więc ta funkcja zwraca błąd na wyjściu.
SELECT PARSE('Tutorial Gateway' AS DATETIME USING 'en-US') AS Result;