Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

CONVERT () trong SQL Server

Trong SQL Server, CONVERT() hàm chuyển đổi một biểu thức của một kiểu dữ liệu này sang một kiểu dữ liệu khác.

Dưới đây là tổng quan nhanh về chức năng với các ví dụ.

Cú pháp

Cú pháp như sau:

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

Ở đâu expression là biểu thức để chuyển đổi, data_type là kiểu dữ liệu mới và length là độ dài tùy chọn cho kiểu dữ liệu mới.

style tùy chọn đối số có thể được sử dụng để chỉ định cách hàm sẽ dịch biểu thức expression lý lẽ. Ví dụ:bạn có thể sử dụng đối số này để chỉ định định dạng ngày.

Ví dụ

Dưới đây là một ví dụ về chuyển đổi một chuỗi thành số thập phân:

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

Kết quả:

7.00

Chuỗi đến ngày

Dưới đây là một ví dụ về truyền một chuỗi thành một ngày:

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

Kết quả:

2030-02-09

Trong trường hợp này, CONVERT() chức năng có thể xác định các phần của ngày vì tôi đã cung cấp ngày ở định dạng mà nó nhận dạng được.

Việc chuyển một giá trị không thể được truyền dưới dạng ngày dẫn đến lỗi:

SELECT CONVERT(date, 'My Birthday');

Kết quả:

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

Ngôn ngữ

Ngôn ngữ của phiên hiện tại có thể tạo ra sự khác biệt trong cách diễn giải ngày tháng.

Đây là những gì sẽ xảy ra khi sử dụng tiếng Anh:

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

Kết quả:

2030-02-09

Trong trường hợp này, ngày đó được hiểu là ngày thứ chín của tháng 2.

Hãy thay đổi ngôn ngữ thành us_English :

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

Kết quả:

2030-09-02

Lần này, nó diễn giải ngày là ngày thứ hai của tháng 9.

style Đối số

Chúng ta có thể sử dụng style tùy chọn đối số để chỉ định cách dịch biểu thức.

Ví dụ:

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

Kết quả:

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

Nối chuỗi

Dưới đây là một ví dụ về truyền một giá trị số sang một chuỗi để nối giá trị với một chuỗi:

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

Kết quả:

Age: 27

Đây là những gì sẽ xảy ra nếu chúng tôi không chuyển đổi nó trước:

SELECT 'Age: ' + 27;

Kết quả:

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

Khi cố gắng nối hai giá trị với các kiểu dữ liệu khác nhau, SQL Server cần chuyển đổi ngầm một trong các giá trị để sử dụng kiểu dữ liệu của giá trị kia, để chúng đều là cùng một kiểu dữ liệu trước khi có thể thực hiện ghép. Nó tuân theo các quy tắc về mức độ ưu tiên của kiểu dữ liệu để thực hiện chuyển đổi này.

Trong SQL Server, int kiểu dữ liệu có mức độ ưu tiên cao hơn varchar .

Do đó, trong ví dụ trên, SQL Server cố gắng chuyển đổi chuỗi thành số nguyên, nhưng điều này không thành công vì không thể chuyển đổi chuỗi thành số nguyên.

Cắt bớt văn bản

Một thủ thuật nhỏ hữu ích mà chúng ta có thể thực hiện với CONVERT() chức năng là cắt ngắn các chuỗi dài hơn thành một độ dài dễ đọc hơn.

Dưới đây là một ví dụ về việc cắt bớt văn bản được chọn từ bảng cơ sở dữ liệu:

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

Kết quả:

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

Thông tin thêm

CONVERT() hàm hoạt động theo cách tương tự với CAST() và nhiều chuyển đổi dữ liệu có thể được thực hiện bằng cách sử dụng một trong hai. Điều đó nói lên rằng có sự khác biệt giữa chúng.

Xem tài liệu của Microsoft về CAST()CONVERT() để biết thêm thông tin chi tiết về cách sử dụng chức năng này.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tìm hiểu phân vùng nào mà một giá trị nhất định sẽ được ánh xạ tới trong SQL Server (T-SQL)

  2. Truy vấn chỉ mục tạo lại máy chủ SQL

  3. Thêm giá trị mặc định của trường datetime trong SQL Server vào dấu thời gian

  4. Điều gì làm cho một câu lệnh SQL có thể phân loại được?

  5. Cách tạo Bảng bằng GUI trong SQL Server - Hướng dẫn SQL Server / T-SQL Phần 37