sql >> Databáze >  >> RDS >> Sqlserver

Jak CAST() funguje v SQL Server

V SQL Server, CAST() funkce převede výraz jednoho datového typu na jiný.

Zde je rychlý přehled funkce s příklady.

Syntaxe

Syntaxe vypadá takto:

CAST ( expression AS data_type [ ( length ) ] )  

Kde expression je výraz, který se má převést, data_type je nový datový typ a length je volitelná délka pro nový datový typ.

Příklad

Zde je příklad přetypování řetězce jako desítkové:

SELECT CAST('007' AS DECIMAL(5,2));

Výsledek:

7.00

Řetězec k datu

Zde je příklad seslání řetězce na datum:

SELECT CAST('09 Feb 2030' AS date);

Výsledek:

2030-02-09

V tomto případě CAST() funkce byla schopna určit, které části data jsou které, protože jsem poskytl datum ve formátu, který rozpoznává.

Předání hodnoty, kterou nelze přetypovat jako datum, způsobí chybu:

SELECT CAST('Next Xmas' AS date);

Výsledek:

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

Místní nastavení

Jazyk aktuální relace může ovlivnit způsob interpretace dat.

Při použití britského jazyka se stane toto:

SET LANGUAGE British;
SELECT CAST('09/02/2030' AS date);

Výsledek:

2030-02-09

V tomto případě bylo datum interpretováno jako devátý únorový den.

Změňme jazyk na us_English :

SET LANGUAGE us_English;
SELECT CAST('09/02/2030' AS date);

Výsledek:

2030-09-02

Tentokrát to datum interpretovalo jako druhý den září.

Zřetězení řetězců

Zde je příklad přetypování číselné hodnoty do řetězce za účelem zřetězení hodnoty s řetězcem:

SELECT 'Likes: ' + CAST(178 AS VARCHAR(10));

Výsledek:

Likes: 178

Pokud jej neodesíláme, stane se toto:

SELECT 'Likes: ' + 178;

Výsledek:

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

Při pokusu o zřetězení dvou hodnot s různými datovými typy musí SQL Server implicitně převést jednu z hodnot, aby používala datový typ druhé, aby byly obě stejného datového typu, než může provést zřetězení. Při provádění této konverze se řídí pravidly priority datových typů.

V SQL Server, INT datový typ má vyšší prioritu než VARCHAR .

Proto se ve výše uvedeném příkladu SQL Server pokusí převést řetězec na celé číslo. To se však nezdaří, protože řetězec nelze převést na celé číslo.

Zkrácení textu

Jeden šikovný malý trik, který můžeme provést pomocí CAST() funkcí je zkrátit delší řetězce na čitelnější délku.

Zde je příklad zkrácení textu vybraného z databázové tabulky:

SELECT
    ProductName,
    CAST(ProductName AS VARCHAR(20)) AS Truncated
FROM Products;

Výsledek:

+---------------------------------+----------------------+
| 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 |
+---------------------------------+----------------------+

Další informace

CAST() funkce funguje podobným způsobem jako CONVERT() a pomocí kterékoli z nich lze provést mnoho převodů dat. To znamená, že mezi nimi existují rozdíly.

Viz dokumentaci společnosti Microsoft pro CAST() a CONVERT() pro podrobnější informace o používání této funkce.


  1. Funkce NVL2() v Oracle

  2. Nalezení rodiče na nejvyšší úrovni v SQL

  3. Osvědčený postup pro volné propojení mezi daty a uživatelským rozhraním v systému Android – Adaptér, Filtr, CursorLoader a ContentProvider

  4. Ladění PostgreSQL:Klíčové věci pro zvýšení výkonu