NEWS

[DATABASE] So sánh hai phiên bản phần mềm trên SQLSERVER

[DATABASE] So sánh hai phiên bản phần mềm trên SQLSERVER
Đăng bởi: Thảo Meo - Lượt xem: 4057 12:40:10, 25/03/2020DATABASE   In bài viết

Xin chào các bạn, bài viết hôm nay mình sẽ tiếp tục hướng dẫn các bạn cách so sánh hai phiên bản phần mềm trên SQLSERVER.

[DATABASE] Compare two version application SQL

+ Phiên bản 1 ở Localhost: 1.5.2.3 

+ Phiên bản 2 ở Server : 1.5.4.1

Giờ mình muốn so sánh hai phiên bản này phiên bản nào lớn hơn để update phần mềm.

Cách thực hiện:

+ Phiên bản 1: 1.5.2.3 => chuyển thành 1000500020003000

+ Phiên bản 2: 1.5.4.1 => chuyển thành 1000500040001000

Sau đó mình sẽ so sánh hai dãy số này để tìm ra phiên bản lớn hơn.

Mình sẽ sử dụng hàm STRING_SPLIT, để cách từ số ra sau dấu (chấm) và thêm format 4 số cho mỗi chữ số lại, rồi nối chúng ta.

Souce code function Sacalar ConvertVerionToDecimal() sql:

SET QUOTED_IDENTIFIER ON
SET ANSI_NULLS ON
GO
-- =============================================
-- Author:		NGUYENTHAO
-- Create date: 24/03/2020
-- Description:	Chuyển version sang Decimal để so sánh version
-- =============================================
ALTER FUNCTION ConvertVerionToDecimal
(	
	@version VARCHAR(20)
)
RETURNS NUMERIC
AS
BEGIN

DECLARE @result NUMERIC = 0
	
	SELECT @result = CAST(
STUFF((
         SELECT '' + NAME
            FROM (SELECT FORMAT(CAST(VALUE AS INT), '0000') AS NAME  FROM  STRING_SPLIT(@version, '.'))  A
            FOR XML PATH('')
         ), 1, 1, '') AS NUMERIC) 

		
		 RETURN @result;
END

GO

Giờ đến so sánh mình sẽ chạy câu lệnh truy vấn sau:

SELECT IIF(dbo.ConvertVerionToDecimal('1.5.2.3') > dbo.ConvertVerionToDecimal('1.5.4.1'), 1,0) AS result

Kết quả thực hiện:

compare_version_sql

Thanks for watching!

THÔNG TIN TÁC GIẢ

[DATABASE] So sánh hai phiên bản phần mềm trên SQLSERVER
Đăng bởi: Thảo Meo - Lượt xem: 4057 12:40:10, 25/03/2020DATABASE   In bài viết

CÁC BÀI CÙNG CHỦ ĐỀ

Đọc tiếp