Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

CONVERT() в SQL Server

В SQL Server, CONVERT() функция преобразува израз от един тип данни в друг.

Ето кратък преглед на функцията с примери.

Синтаксис

Синтаксисът е така:

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

Където expression е изразът за преобразуване, data_type е новият тип данни и length е незадължителна дължина за новия тип данни.

Незадължителният style Аргументът може да се използва за определяне как функцията трябва да преведе expression аргумент. Например, можете да използвате този аргумент, за да посочите формата на датата.

Пример

Ето пример за преобразуване на низ в десетичен:

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

Резултат:

7.00

Низ до дата

Ето пример за прехвърляне на низ към дата:

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

Резултат:

2030-02-09

В този случай CONVERT() функцията успя да определи кои са кои части от датата, защото предоставих датата във формат, който тя разпознава.

Предаването на стойност, която не може да бъде прехвърлена като дата, води до грешка:

SELECT CONVERT(date, 'My Birthday');

Резултат:

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

Locale

Езикът на текущата сесия може да промени начина, по който датите се тълкуват.

Ето какво се случва при използване на британски език:

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

Резултат:

2030-02-09

В този случай датата се тълкува като деветия ден на февруари.

Нека променим езика на us_English :

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

Резултат:

2030-09-02

Този път тя интерпретира датата като втори ден на септември.

style Аргумент

Можем да използваме незадължителния style аргумент, за да посочите как трябва да бъде преведен изразът.

Пример:

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";

Резултат:

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

Конкатенация на низове

Ето пример за прехвърляне на числова стойност към низ, за ​​да се конкатенира стойността с низ:

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

Резултат:

Age: 27

Ето какво се случва, ако първо не го преобразуваме:

SELECT 'Age: ' + 27;

Резултат:

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

Когато се опитва да конкатенира две стойности с различни типове данни, SQL Server трябва имплицитно да преобразува една от стойностите, за да използва типа данни на другата, така че и двете да са от един и същ тип данни, преди да може да извърши конкатенацията. Това преобразуване следва правилата за приоритет на типа данни.

В SQL Server, int типът данни има по-висок приоритет от varchar .

Следователно в горния пример SQL Server се опитва да преобразува низа в цяло число, но това се проваля, защото низът не може да бъде преобразуван в цяло число.

Отрязване на текст

Един удобен малък трик, който можем да изпълним с CONVERT() функцията е да съкрати по-дългите низове до по-четлива дължина.

Ето пример за съкращаване на текст, избран от таблица на база данни:

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

Резултат:

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

Повече информация

CONVERT() функцията работи по подобен начин на CAST() функция и много преобразувания на данни могат да бъдат извършени с помощта на която и да е от тях. Въпреки това има разлики между тях.

Вижте документацията на Microsoft за CAST() и CONVERT() за по-подробна информация относно използването на тази функция.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. JPA SQL Server Без диалектно съпоставяне за JDBC тип:-9

  2. Как да комбинирате резултатите от две заявки в един набор от данни

  3. Функция за изчисляване на медиана в SQL Server

  4. Инструкцията ALTER TABLE е в конфликт с ограничението FOREIGN KEY в SQL Server - SQL Server / TSQL Урок, част 69

  5. Вземете идентификатора на обект от неговото име в SQL Server:OBJECT_ID()