sách gpt4 ăn đã đi

Giới thiệu sử dụng toán tử bảng SQLServer APPLY

In lại Tác giả: qq735679552 Thời gian cập nhật: 29-09-2022 22:32:09 28 4
mua khóa gpt4 giày nike

CFSDN nhấn mạnh vào giá trị tạo ra nguồn mở và chúng tôi cam kết xây dựng nền tảng chia sẻ tài nguyên để mọi nhân viên CNTT có thể tìm thấy thế giới tuyệt vời của bạn tại đây.

Bài blog CFSDN này giới thiệu cách sử dụng các toán tử bảng SQLServer APPLY do tác giả sưu tầm và biên soạn. Nếu các bạn quan tâm đến bài viết này thì nhớ like nhé.

Toán tử bảng ÁP DỤNG mới áp dụng biểu thức bảng bên phải cho mỗi hàng trong biểu thức bảng bên trái. Không giống như THAM GIA, biểu thức bảng nào có thể được tính toán trước, APPLY phải tính toán biểu thức bên trái một cách hợp lý trước tiên. Thứ tự logic của các đầu vào đánh giá này cho phép biểu thức bên phải có liên quan đến biểu thức bảng bên trái.

  APPLY có hai dạng, một là OUTER APPLY và một là CROSS APPLY. Sự khác biệt là việc chỉ định OUTER có nghĩa là tập kết quả sẽ chứa các hàng trong biểu thức bảng bên trái làm cho biểu thức bảng bên phải trống, trong khi chỉ định CROSS có nghĩa ngược lại. Tập kết quả không chứa các hàng từ biểu thức bảng bên trái làm cho biểu thức bảng bên phải trống.

  Sẽ rõ ràng hơn nếu giải thích điều này bằng một vài ví dụ.

  Ví dụ 1: Mẫu ĐĂNG KÝ CHÉO.

  Ví dụ: dữ liệu được lưu trữ trong một cột nhất định trong bảng LargeTable là dữ liệu được phân tách bằng dấu ://. Khi chúng tôi xử lý nó, trước tiên chúng tôi có thể tách giá trị này và sau đó đặt từng giá trị được phân tách vào một hàng riêng biệt trong một bảng. sau đó xử lý bảng này.

  Dữ liệu gốc (bảng LargeTable):

Giới thiệu sử dụng toán tử bảng SQLServer APPLY

  Để đơn giản, trước tiên chúng tôi xử lý hàng có id=2. Những dữ liệu này được phân tách bằng : có thể là khóa chính (t1) của một trong các bảng của chúng tôi. table. , được liên kết với bảng t1 và thực hiện một số xử lý.

  Kết quả xử lý dữ liệu riêng biệt này như sau:

Giới thiệu sử dụng toán tử bảng SQLServer APPLY

  Nếu bạn sử dụng phiên bản trước để xử lý thao tác này thì tạm thời tôi chưa nghĩ ra cách xử lý. Nếu ai đã thực hiện thì có thể cho tôi một gợi ý được không.

  Việc này chỉ thực hiện được với một trong các hàng. Nếu chúng ta thực hiện với cả ba hàng trong hình trên và đặt ba hàng giá trị cách nhau bởi dấu : vào một bảng thì chúng ta sẽ xử lý như thế nào?

  Đã đến lúc nhân vật chính của ngày hôm nay, ỨNG DỤNG, ra mắt. Các thao tác trên có thể được xử lý trong một dòng bằng toán tử bảng APPLY.

Sao chép mã mã như sau

CHỌN một TỪ dbo.LargeTable AS LT --bảng thực tế CROSS APPLY dbo.split(LT.Name,':') --hàm có giá trị bảng tùy chỉnh, xử lý dữ liệu được phân tách bằng một ký tự nhất định và trả về dữ liệu này vào Bảng WHERE a <> '' --Xóa dữ liệu có trường trống trong bảng kết quả.

Kết quả xử lý như hình dưới đây:

Giới thiệu sử dụng toán tử bảng SQLServer APPLY

  Chẳng phải nó rất đơn giản sao. Điều cần được xác định thêm là hàm có giá trị bảng tùy chỉnh (tách), mà tôi tìm thấy trên mạng. Nó tương tự như thao tác Tách trong .Net. Mã như sau:

Sao chép mã mã như sau

/* Sử dụng: SELECT * FROM dbo.split('581::579::519::279::406::361::560',':') */ ALTER Function [dbo].[Split](@Sql varchar(8000),@Splits varchar(10)) returns @temp Table (a varchar(100)) As Begin Declare @i Int Set @Sql = RTrim(LTrim(@Sql)) Set @i = CharIndex(@Splits,@Sql) While @i >= 1 Begin Insert @temp Values(Left(@Sql,@i-1)) Set @Sql = SubString(@Sql,@i+1,Len(@Sql)-@i) Set @i = CharIndex(@Splits,@Sql) End If @Sql <> '' Chèn giá trị @temp (@Sql) Trả về Kết thúc 。

Ví dụ 2: Mẫu ĐƠN ĐĂNG KÝ BÊN NGOÀI.

  。

  Kịch bản: Có bảng nhà cung cấp (Nhà cung cấp) và bảng sản phẩm nhà cung cấp (Sản phẩm). Chúng ta muốn lấy 2 sản phẩm có đơn giá cao nhất từ ​​mỗi nhà cung cấp.

  Danh sách nhà cung cấp:

Giới thiệu sử dụng toán tử bảng SQLServer APPLY

  Danh sách sản phẩm của nhà cung cấp:

Giới thiệu sử dụng toán tử bảng SQLServer APPLY

  Đầu tiên, chúng ta tạo một hàm có giá trị bảng tùy chỉnh (dbo.fn_top_products) để trả về hai sản phẩm có đơn giá cao nhất dựa trên ID nhà cung cấp.

Sao chép mã mã như sau

NẾU OBJECT_ID('dbo.fn_top_products') KHÔNG PHẢI LÀ CHỨC NĂNG DROP NULL dbo.fn_top_products; CHỌN HÀNG ĐẦU (2)IdAS ProductId,ProductName,UnitPrice TỪ dbo.Products WHERE Nhà cung cấpId = @supid ĐẶT HÀNG THEO Đơn giá DESC GO.

Được rồi, dữ liệu sơ bộ đã được chuẩn bị. Hãy thử truy vấn bằng OUTER APPLY và xem kết quả sẽ xuất hiện. Thực hiện câu lệnh sau:

Sao chép mã mã như sau

CHỌN S.id LÀM SupplierId,S.CompanyName,UnitPrice TỪ dbo.Supplier LÀM S ÁP DỤNG BÊN NGOÀI dbo.fn_top_products(S.id) LÀM P 。

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

  。

Giới thiệu sử dụng toán tử bảng SQLServer APPLY

  Lưu ý bản ghi cuối cùng là NULL. Công ty Reed không có sản phẩm nào nên đơn giá là NULL.

  Nếu sử dụng biểu mẫu CROSS APPLY, hãy thực hiện truy vấn sau:

  。

Sao chép mã mã như sau

CHỌN S.id LÀM SupplierId,S.CompanyName,UnitPrice TỪ dbo.Supplier LÀM S ÁP DỤNG CHÉO dbo.fn_top_products(S.id) LÀM P 。

Đầu ra được tạo ra như sau:

Giới thiệu sử dụng toán tử bảng SQLServer APPLY

  Mọi người đều có thể thấy sự khác biệt giữa OUTER APPLY và CROSS APPLY.

  Hãy nói lại về quá trình thực thi của APPLY. Trước tiên, nó tính toán một cách logic biểu thức bảng bên trái (bảng LargeTable ở trên), sau đó áp dụng biểu thức bên phải (hàm có giá trị bảng tùy chỉnh Split ở trên) cho mỗi hàng của biểu thức bảng bên trái. Điều thực sự xảy ra là tham chiếu cột của truy vấn bên ngoài được truyền dưới dạng tham số cho hàm có giá trị bảng.

Cuối cùng, bài viết giới thiệu cách sử dụng toán tử bảng SQLServer APPLY kết thúc tại đây. Nếu bạn muốn biết thêm về phần giới thiệu cách sử dụng toán tử bảng SQLServer APPLY, vui lòng tìm kiếm các bài viết CFSDN hoặc tiếp tục duyệt các bài viết liên quan. Tôi hy vọng bạn sẽ hỗ trợ tôi trong tương lai blog của tôi! .

28 4 0
qq735679552
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress