Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

CONVERT() w SQL Server

W SQL Server, CONVERT() funkcja konwertuje wyrażenie jednego typu danych na inny.

Oto krótki przegląd funkcji z przykładami.

Składnia

Składnia wygląda tak:

CONVERT ( data_type [ ( length ) ] , expression [ , style ] ) 

Gdzie expression jest wyrażeniem do konwersji, data_type to nowy typ danych, a length to opcjonalna długość dla nowego typu danych.

Opcjonalny style argument może być użyty do określenia, jak funkcja powinna tłumaczyć expression argument. Na przykład możesz użyć tego argumentu, aby określić format daty.

Przykład

Oto przykład konwersji ciągu na dziesiętny:

SELECT CONVERT(DECIMAL(5,2), '007');

Wynik:

7.00

Ciąg do daty

Oto przykład rzutowania ciągu na datę:

SELECT CONVERT(date, '09 Feb 2030');

Wynik:

2030-02-09

W tym przypadku CONVERT() funkcja była w stanie określić, które części daty są które, ponieważ podałem datę w formacie, który rozpoznaje.

Przekazanie wartości, której nie można rzutować jako daty, powoduje błąd:

SELECT CONVERT(date, 'My Birthday');

Wynik:

Msg 241, Level 16, State 1, Line 1
Conversion failed when converting date and/or time from character string.

Lokal

Język bieżącej sesji może mieć wpływ na interpretację dat.

Oto, co dzieje się podczas używania języka brytyjskiego:

SET LANGUAGE British;
SELECT CONVERT(date, '09/02/2030');

Wynik:

2030-02-09

W tym przypadku data została zinterpretowana jako dziewiąty dzień lutego.

Zmieńmy język na us_English :

SET LANGUAGE us_English;
SELECT CONVERT(date, '09/02/2030');

Wynik:

2030-09-02

Tym razem zinterpretował datę jako drugi dzień września.

Styl style Argument

Możemy użyć opcjonalnego style argument określający sposób tłumaczenia wyrażenia.

Przykład:

SET LANGUAGE British;
SELECT 
    CONVERT(date, '09/02/2030') AS "British",
    CONVERT(date, '09/02/2030', 101) AS "US",
    CONVERT(date, '09/02/30', 1) AS "US (short)",
    CONVERT(date, '20300902', 112) AS "ISO",
    CONVERT(date, '09.02.2030', 104) AS "German";

Wynik:

+------------+------------+--------------+------------+------------+
| British    | US         | US (short)   | ISO        | German     |
|------------+------------+--------------+------------+------------|
| 2030-02-09 | 2030-09-02 | 2030-09-02   | 2030-09-02 | 2030-02-09 |
+------------+------------+--------------+------------+------------+

Konkatenacja ciągów

Oto przykład rzutowania wartości liczbowej na łańcuch w celu połączenia wartości z łańcuchem:

SELECT 'Age: ' + CONVERT(varchar(10), 27);

Wynik:

Age: 27

Oto, co się stanie, jeśli najpierw go nie przekonwertujemy:

SELECT 'Age: ' + 27;

Wynik:

Msg 245, Level 16, State 1, Line 1
Conversion failed when converting the varchar value 'Age: ' to data type int.

Próbując połączyć dwie wartości z różnymi typami danych, SQL Server musi niejawnie przekonwertować jedną z wartości, aby używała typu danych drugiej, tak aby obie miały ten sam typ danych, zanim będzie mógł wykonać połączenie. Konwersja odbywa się zgodnie z regułami pierwszeństwa typu danych.

W SQL Server int typ danych ma wyższy priorytet niż varchar .

Dlatego w powyższym przykładzie SQL Server próbuje przekonwertować ciąg na liczbę całkowitą, ale to się nie udaje, ponieważ ciąg nie może zostać przekonwertowany na liczbę całkowitą.

Obcinanie tekstu

Jedna poręczna sztuczka, którą możemy wykonać za pomocą CONVERT() Funkcja polega na obcinaniu dłuższych łańcuchów do bardziej czytelnej długości.

Oto przykład obcinania tekstu wybranego z tabeli bazy danych:

SELECT
    ProductName,
    CONVERT(varchar(20), ProductName) AS Truncated
FROM Products;

Wynik:

+---------------------------------+----------------------+
| ProductName                     | Truncated            |
|---------------------------------+----------------------|
| Left handed screwdriver         | Left handed screwdri |
| Long Weight (blue)              | Long Weight (blue)   |
| Long Weight (green)             | Long Weight (green)  |
| Sledge Hammer                   | Sledge Hammer        |
| Chainsaw                        | Chainsaw             |
| Straw Dog Box                   | Straw Dog Box        |
| Bottomless Coffee Mugs (4 Pack) | Bottomless Coffee Mu |
| Right handed screwdriver        | Right handed screwdr |
+---------------------------------+----------------------+

Więcej informacji

CONVERT() funkcja działa podobnie do CAST() funkcji, a wiele konwersji danych można wykonać za pomocą jednej z nich. To powiedziawszy, istnieją między nimi różnice.

Zobacz dokumentację Microsoft dla CAST() i CONVERT() aby uzyskać bardziej szczegółowe informacje na temat korzystania z tej funkcji.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Co oznacza podwójne w serwerze sql?

  2. Dynamiczne maskowanie danych w SQL Server dla zaawansowanych użytkowników

  3. Powielanie wierszy na podstawie wartości kolumny w każdym wierszu

  4. SQL, jak łączyć wyniki?

  5. Jak usunąć wiodące i końcowe białe znaki w SQL Server — TRIM()