-
Thiết lập ban đầu
-
Các khái niệm cơ bản
-
Nhóm Truy vấn dữ liệu với SELECT
-
Nhóm thao tác dữ liệu
-
Các nhóm hàm xử lý
-
Hàm trong SQL
-
Các thao tác mở rộng
-
TÀI LIỆU THAM KHẢO CHO LẬP TRÌNH ABAP
Câu lệnh chuyển đổi dữ liệu với CAST và CONVERT trong SQL
Câu lệnh chuyển đổi dữ liệu với CAST và CONVERT trong SQL
Giới thiệu
Trong chương này, chúng ta sẽ học cách sử dụng SQL Cast và Convert các câu lệnh với các tùy chọn khác nhau.
Câu lệnh Cast
Câu lệnh Cast được sử dụng để chuyển đổi một biến kiểu dữ liệu hoặc dữ liệu từ kiểu dữ liệu này sang kiểu dữ liệu khác. Nếu chuyển đổi không thành công, hàm sẽ trả về lỗi. Nếu không, nó sẽ trả về giá trị đã chuyển đổi. Câu lệnh Truyền cung cấp kiểu dữ liệu cho tham số động (?) hoặc giá trị NULL trong SQL.
Cú pháp
- CAST(expression AS datatype(length))
Câu lệnh Convert
Câu lệnh Convert được sử dụng để chuyển đổi các biểu thức từ loại này sang loại khác, trong nhiều trường hợp sẽ cần một thủ tục được lưu trữ hoặc một thường trình khác để chuyển đổi dữ liệu từ loại ngày giờ sang loại varchar. Câu lệnh Convert được sử dụng cho những việc như vậy. Hàm Convert() có thể được sử dụng để hiển thị dữ liệu ngày/giờ ở các định dạng khác nhau trong kiểu dữ liệu SQL.
Cú pháp
- CONVERT(data_type(length), expression, style)
Sử dụng cả chức năng Cast và Convert
Các ví dụ này truy xuất tên của OrderName cho những OrderDetails có 1 là chữ số đầu tiên của OrderName và chuyển đổi các giá trị OrderId của chúng thành int.
Cú pháp
- — Use CAST
- USE sample;
- GO
- SELECT SUBSTRING(OrderName, 1, 40) AS OrderName, orderAddress
- FROM OrderDetails
- WHERE CAST( OrderId AS int) LIKE ‘10%’;
- GO
- — Use CONVERT.
- USE sample;
- GO
- SELECT SUBSTRING(OrderName, 1, 40) AS OrderName , orderAddress
- FROM OrderDetails
- WHERE CONVERT(int, OrderId) LIKE ‘8%’;
- GO
Ví dụ
Câu lệnh Cast với các toán tử số học
Trong ví dụ này, chúng ta có thể tính toán một cột đơn (Tính toán) bằng cách chia tổng số OrderId cho OrderDetails. Giá trị này được làm tròn thành số nguyên gần nhất và sau đó được Cast thành một loại dữ liệu.
Cú pháp
- USE sample ;
- GO
- SELECT CAST(ROUND(OrderId, 0) AS int) AS Computed
- FROM OrderDetails
- WHERE OrderId != 0;
- GO
Ví dụ
Sử dụng Cast để nối câu lệnh
Ví dụ này nối các biểu thức không có ký tự bằng cách sử dụng Cast. Nó sử dụng cơ sở dữ liệu Sample.
Cú pháp
- SELECT ‘The Order Details ‘ + CAST(OrderName AS varchar(12)) AS OrderCity
- FROM OrderDetails
- WHERE OrderId BETWEEN 8 AND 10;
Ví dụ
Sử dụng Cast để tạo câu lệnh văn bản dễ đọc hơn
Ví dụ này sử dụng tính năng Cast trong danh sách Select để chuyển đổi cột OrderName thành cột char(50).
Cú pháp
- SELECT DISTINCT CAST(OrderName AS char(50)) AS Name
- FROM OrderDetails
- WHERE OrderName LIKE ‘Mango’;
Ví dụ
Sử dụng Cast với câu lệnh Like
Ví dụ này chuyển đổi các giá trị OrderId của cột EmpName, EmpAddress, EmpCity thành kiểu dữ liệu Int, sau đó thành kiểu dữ liệu char(200) để mệnh đề Like có thể sử dụng nó.
Cú pháp
- USE sample;
- GO
- SELECT EmpName ,EmpAddress, EmpCity
- FROM EmployeeDetail AS p
- JOIN OrderDetails AS s
- ON s.OrderId = s.OrderId
- WHERE CAST(CAST(s.OrderId AS int) AS char(200)) LIKE ‘1%’;
- GO
Ví dụ
Sử dụng Covert hoặc Cast với câu lệnh XML đã nhập
Những ví dụ này cho thấy việc sử dụng Chuyển đổi để chuyển đổi dữ liệu thành XML đã nhập bằng cách sử dụng kiểu dữ liệu XML và cột SQL Server.
Câu lệnh này chuyển đổi một chuỗi có văn bản khoảng trắng và đánh dấu thành XML đã nhập và loại bỏ tất cả khoảng trắng không đáng kể (khoảng trắng ranh giới giữa các nút).
Cú pháp
- SELECT CONVERT(XML, ‘<root><child/></root>’)
Ví dụ
Ví dụ này chuyển đổi một chuỗi tương tự có khoảng trắng, văn bản và đánh dấu thành XML đã nhập và giữ nguyên khoảng trắng ranh giới khoảng trắng không đáng kể giữa các nút trong câu lệnh Chuyển đổi.
Cú pháp
- SELECT CONVERT(XML, ‘<root> <child/> </root>’, 1)
Ví dụ này chuyển một chuỗi có khoảng trắng, văn bản và đánh dấu thành XML đã nhập
Ví dụ
Ví dụ này chuyển một chuỗi có khoảng trắng, văn bản và đánh dấu thành XML đã nhập trong SQL.
Ví dụ
Sử dụng Cast và Covert với câu lệnh dữ liệu DateTime
Cast và convert Bắt đầu với các giá trị Getdate(), ví dụ này hiển thị ngày và giờ hiện tại, sử dụng Cast để thay đổi ngày và giờ hiện tại thành Kiểu dữ liệu ký tự, sau đó sử dụng Covert để hiển thị ngày và giờ ở định dạng ISO 8601 trong SQL
Cú pháp
- SELECT
- GETDATE() AS UnconvertedDateTime,
- CAST(GETDATE() AS nvarchar(40)) AS UsingCast,
- CONVERT(nvarchar(40), GETDATE(), 126) AS UsingConvertTo_ISO8601 ;
- GO
Ví dụ
Câu lệnh này gần như ngược lại với câu lệnh trước đó
Ví dụ này hiển thị ngày và giờ dưới dạng dữ liệu ký tự, sử dụng Cast để thay đổi dữ liệu ký tự thành kiểu dữ liệu ngày giờ, sau đó sử dụng Convert để thay đổi dữ liệu ký tự thành kiểu dữ liệu ngày giờ.
Cú pháp
- SELECT
- ‘2006-04-25T15:50:59.997’ AS UnconvertedText,
- CAST(‘2006-04-25T15:50:59.997’ AS datetime) AS UsingCast,
- CONVERT(datetime, ‘2006-04-25T15:50:59.997’, 126) AS UsingConvertFrom_ISO8601 ;
- GO
Ví dụ
Sử dụng Convert với câu lệnh dữ liệu nhị phân và ký tự
Ví dụ này hiển thị kết quả chuyển đổi dữ liệu nhị phân và ký tự, sử dụng các kiểu khác nhau.
Cú pháp
- SELECT CONVERT(char(8), 0x4E616d65, 0) AS [Style 0, binary to character];
Ví dụ
Ví dụ này cho thấy kiểu 1 có thể buộc kết quả cắt bớt. Các ký tự 0x trong tập hợp kết quả buộc phải cắt bớt.
Cú pháp
- SELECT CONVERT(char(8), 0x4E616d65, 1) AS [Style 1 binary to character]
Ví dụ
Chuyển đổi kiểu dữ liệu ngày và giờ
Ví dụ này cho thấy việc chuyển đổi các loại dữ liệu ngày, giờ và ngày giờ. ]]
Cú pháp
- DECLARE @d1 date, @t1 time, @dt1 datetime;
- SET @d1 = GETDATE();
- SET @t1 = GETDATE();
- SET @dt1 = GETDATE();
- SET @d1 = GETDATE();
- — When converting date to datetime the minutes portion becomes zero.
- SELECT @d1 AS [date], CAST (@d1 AS datetime) AS [date as datetime];
- — When converting time to datetime the date portion becomes zero
- — which converts to January 1, 1900.
- SELECT @t1 AS [time], CAST (@t1 AS datetime) AS [time as datetime];
- — When converting datetime to date or time non-applicable portion is dropped.
- SELECT @dt1 AS [datetime], CAST (@dt1 AS date) AS [datetime as date],
- CAST (@dt1 AS time) AS [datetime as time];
Sử dụng chuyển đổi với dữ liệu ngày giờ ở các định dạng khác nhau
Bắt đầu với các giá trị getdate(), ví dụ này sử dụng Convert để hiển thị tất cả các kiểu ngày và giờ trong phần Date and Time styles của bài viết này.
Ảnh hưởng của mức độ ưu tiên của loại dữ liệu trong câu lệnh chuyển đổi được phép.
Ví dụ sau định nghĩa một biến kiểu Varchar, gán một giá trị số nguyên cho biến, sau đó chọn một phép nối của biến với một chuỗi.
Cú pháp
- DECLARE @string varchar(10);
- SET @string = 1;
- SELECT @string + ‘ is a string.’ AS Result
Ví dụ
Giá trị int của 1 đã được chuyển đổi thành varchar.
Thay vào đó, ví dụ này hiển thị một truy vấn tương tự sử dụng biến int.
Cú pháp
- DECLARE @notastring int;
- SET @notastring = ‘1’;
- SELECT @notastring + ‘ is not a string.’ AS Result
Trong trường hợp này, câu lệnh Select sẽ đưa ra lỗi sau.
Ví dụ
Câu lệnh này Để đánh giá biểu thức @notastring + không phải là câu lệnh SQL Server chuỗi và cần tuân theo các quy tắc ưu tiên kiểu dữ liệu để hoàn tất chuyển đổi ẩn trước khi có thể tính kết quả của biểu thức.
Bởi vì int có quyền ưu tiên cao hơn varchar SQL Server cố gắng chuyển đổi chuỗi thành số nguyên và không thành công vì không thể chuyển đổi chuỗi này thành số nguyên.
Nếu chúng tôi cung cấp một chuỗi có thể được chuyển đổi, câu lệnh này sẽ thành công, như đã thấy trong ví dụ sau.
Cú pháp
- DECLARE @notastring int;
- SET @notastring = ‘1’;
- SELECT @notastring + ‘1
Trong trường hợp này, chuỗi ‘1’ có thể được chuyển đổi thành giá trị số nguyên 1 nên câu lệnh Select này sẽ trả về giá trị 2. Khi kiểu dữ liệu được cung cấp là số nguyên, toán tử + trở thành toán tử toán học bổ sung, thay vì phép nối chuỗi trong Câu lệnh SQL.
Bản tóm tắt
Trong chương này, chúng ta đã học cách sử dụng Thủ tục lưu trữ SQL với các tùy chọn khác nhau.
(Source: https://www.c-sharpcorner.com/)