Điều kiện IN cho phép bạn đặt một danh sách các giá trị phải khớp với các giá trị trong bảng của bạn. Điều kiện IN liệt kê các giá trị trong ngoặc đơn và nó tốt hơn là làm việc với nhiều điều kiện OR.

Bạn đang xem : không giống như trong sql

SQL trở nên phức tạp khi bạn có nhiều quy tắc nghiệp vụ chạy theo cách bạn trả về các bộ bản ghi. Là một lập trình viên, bạn thu thập các quy tắc nghiệp vụ sau đó quyết định cách cấu trúc các câu lệnh SQL của bạn để đảm bảo rằng kết quả trả về là chính xác cho các báo cáo và ứng dụng. Các câu lệnh này trở nên phức tạp khi bạn có một số yêu cầu nghiệp vụ phải được sử dụng để trả về tập dữ liệu giúp các doanh nghiệp đưa ra quyết định. Một số từ khóa SQL giúp bạn xây dựng các câu lệnh phức tạp bao gồm IN, NOT và LIKE. LIKE sử dụng các ký tự đại diện, được sử dụng để truy vấn các giá trị tương tự, nhưng IN và KHÔNG trả về các bộ bản ghi chính xác dựa trên các giá trị cụ thể.

Điều kiện IN

Điều kiện IN cho phép bạn đặt danh sách các giá trị phải khớp với các giá trị trong bảng của bạn. Điều kiện IN liệt kê các giá trị trong ngoặc đơn và nó tốt hơn là làm việc với nhiều điều kiện OR. Đây là bảng mẫu.

CustomerId

First_name

Last_name

Thành phố

Bang

321

Frank

Loe

Dallas

TX

455

Chỉnh sửa

Thompson

Atlanta

GA

456

Chỉnh sửa

Thompson

Atlanta

GA

457

Joe

Smith

Miami

FL

458

Frank

Doe

Dallas

TX

Giả sử bạn muốn trả lại giá trị cho những khách hàng chỉ ở Atlanta và Miami. Bạn có thể viết một câu lệnh HOẶC giống như sau.

CHỌN * TỪ Khách hàng

WHERE Thành phố = ‘Miami ‘HOẶC Thành phố =‘ Atlanta’

Hãy tưởng tượng bạn có 10 thành phố trong số những thành phố này mà bạn cần tìm. Câu lệnh OR dài và phức tạp. Bạn có thể kết hợp các câu lệnh OR này thành một câu lệnh IN. Câu lệnh SQL sau thực hiện tương tự như câu lệnh trên.

CHỌN * TỪ Khách hàng

Thành phố Ở ĐÂU (‘Miami ‘,‘ Atlanta’)

Kết quả của cả hai câu lệnh đều giống nhau. Kết quả sau được hiển thị bằng SQL.

CustomerId

First_name

Last_name

Thành phố

Bang

455

Chỉnh sửa

Thompson

Atlanta

GA

456

Chỉnh sửa

Thompson

Atlanta

GA

457

Joe

Smith

Miami

FL

Mệnh đề NOT

Bạn có thể trả về 1000 bản ghi nhưng muốn loại trừ một số bản ghi trong tập dữ liệu. Cho đến nay, chúng tôi chỉ tạo các câu lệnh SQL mà bạn muốn bao gồm các bản ghi. Đôi khi bạn cần loại trừ các bản ghi khỏi kết quả của mình. Giả sử bạn muốn bao gồm các bản ghi có giá trị thành phố là Atlanta và Miami, nhưng bạn muốn loại trừ các bản ghi có tên đầu tiên của người dùng là Joe. SQL có toán tử NOT loại trừ các bản ghi đó trong khi vẫn bao gồm các bản ghi khác phù hợp với truy vấn IN ban đầu. Truy vấn sau cung cấp cho bạn một ví dụ về toán tử NOT.

CHỌN * TỪ Khách hàng

THÀNH PHỐ Ở ĐÂU (‘Miami ‘,‘ Atlanta’) VÀ First_name KHÔNG Ở (‘joe ‘)

Tuyên bố trên có nội dung “cung cấp cho tôi tất cả các bản ghi có giá trị thành phố là Miami và Atlanta nhưng loại trừ bất kỳ bản ghi nào có tên Joe.” Bản ghi kết quả được thiết lập như sau.

Xem Thêm  Hàm MySQL DATE_FORMAT () - mysql chọn định dạng ngày

CustomerId

First_name

Last_name

Thành phố

Bang

455

Chỉnh sửa

Thompson

Atlanta

GA

456

Chỉnh sửa

Thompson

Atlanta

GA

Lưu ý kết quả trông giống như truy vấn cho câu lệnh IN. Một sự khác biệt là bản ghi “Joe” bị loại trừ. Vì “Joe” khớp với câu lệnh NOT nên nó bị loại khỏi kết quả. Câu lệnh này được xây dựng dựa trên logic AND. Vì AND được sử dụng nên tập kết quả phải khớp với cả hai điều kiện với true để được đưa vào kết quả.

Ngôn ngữ SQL cho phép bạn kết hợp NOT và LIKE để loại bỏ kết quả tìm kiếm bằng cách sử dụng cùng một loại logic ngoại trừ các bản ghi được xóa khỏi tập dữ liệu thay vì thêm chúng. Ví dụ: thay vì tìm kiếm khách hàng ở các thành phố bắt đầu bằng “Đà”, bạn có thể loại trừ khách hàng ở các thành phố đó. Câu lệnh SQL sau sử dụng từ khóa NOT với từ khóa LIKE.

CHỌN * TỪ Khách hàng

NƠI THÀNH PHỐ KHÔNG THÍCH ‘da% ‘

Kết quả là các kết quả dữ liệu sau.

CustomerId

First_name

Last_name

Thành phố

Bang

455

Chỉnh sửa

Thompson

Atlanta

GA

456

Chỉnh sửa

Thompson

Atlanta

GA

457

Joe

Smith

Miami

FL

Toán tử NOT hoạt động với tất cả các từ khóa SQL của bạn để phủ định kết quả. Hãy coi toán tử NOT như một cụm từ hủy bỏ. Khi bạn sử dụng toán tử IN, ngôn ngữ SQL trước tiên nhận được tất cả các giá trị phù hợp. Trong trường hợp này, các tham số là bất kỳ bản ghi nào bắt đầu bằng các ký tự “da”. Sau đó SQL nhìn thấy toán tử NOT và loại bỏ kết quả. Bạn có thể kết hợp toán tử NOT với các cụm từ khác.

Ví dụ: giả sử bạn muốn nhận tất cả các bản ghi bắt đầu bằng “da”, nhưng bạn muốn loại bỏ bất kỳ bản ghi nào bắt đầu bằng “dal”. Câu lệnh SQL sau sẽ loại bỏ các thành phố “dal” khỏi kết quả của bạn.

CHỌN * TỪ Khách hàng

NƠI THÀNH PHỐ THÍCH ‘da% ‘VÀ THÀNH PHỐ KHÔNG THÍCH‘ dal%’

Lưu ý toán tử AND trong câu lệnh trên. Thay vào đó, nếu bạn đặt HOẶC trong bảng sao kê của mình, bạn sẽ lại có được tất cả khách hàng ở bất cứ đâu. Với toán tử AND, bạn yêu cầu SQL chỉ đưa ra kết quả trả về true cho cả hai cụm từ. Do đó, các giá trị phải có “da” là hai ký tự đầu tiên, nhưng SQL cũng loại bỏ bất kỳ thành phố nào bắt đầu bằng “dal.” Trong ví dụ này, không có bản ghi nào trả về, bởi vì tất cả các bản ghi không khớp với cả hai cụm từ.

Giả sử bạn đã đặt toán tử OR thay vì AND trong câu lệnh của mình. Câu lệnh sau sử dụng OR thay vì AND.

CHỌN * TỪ Khách hàng

NƠI THÀNH PHỐ THÍCH ‘da% ‘HOẶC THÀNH PHỐ KHÔNG THÍCH‘ dal%’

Điều kiện OR sẽ thay đổi câu lệnh SQL của bạn thành “trả về tất cả các bản ghi bắt đầu bằng‘ da ‘HOẶC các bản ghi không bắt đầu bằng ‘dal’.” Logic này phức tạp hơn một chút. Kết quả là tất cả các bản ghi có “da” đều được trả về, có nghĩa là khách hàng “dallas” của bạn được trả về. Tiếp theo, cụm từ thứ hai yêu cầu SQL trả về tất cả các bản ghi không bắt đầu bằng “dal”. Trong bảng ví dụ của bạn, tất cả các bản ghi không bắt đầu bằng các ký tự “dal”, vì vậy SQL trả về tất cả các bản ghi. Cụm từ đầu tiên không quan trọng, vì OR được sử dụng và tất cả các bản ghi của bạn đều khớp với cụm từ thứ hai.

Xem Thêm  Máy quét Java (Có ví dụ) - hệ thống java trong máy quét

Kết quả là, SQL trả về tập dữ liệu sau.

CustomerId

First_name

Last_name

Thành phố

Bang

321

Frank

Loe

Dallas

TX

455

Chỉnh sửa

Thompson

Atlanta

GA

456

Chỉnh sửa

Thompson

Atlanta

GA

457

Joe

Smith

Miami

FL

458

Frank

Doe

Dallas

TX

Hiểu được sự khác biệt giữa toán tử OR và AND và sử dụng chúng với toán tử NOT sẽ giúp bạn tạo các câu lệnh SQL phức tạp cung cấp cho bạn tập dữ liệu chính xác mà bạn cần để hiển thị trong các ứng dụng của mình và chạy báo cáo.

Nhà điều hành LIKE

Toán tử LIKE đã được thảo luận một chút, nhưng toán tử LIKE có một số tùy chọn cú pháp khác mà bạn có thể sử dụng. Toán tử LIKE sử dụng ký tự đại diện%. Ký tự% có thể được đặt ở đầu, cuối hoặc trong giá trị chuỗi của bạn. Lưu ý rằng toán tử% dành cho các giá trị chuỗi hoặc varchar.

Các ví dụ trên sử dụng ký tự phần trăm để trả về các giá trị bắt đầu bằng một chuỗi cụ thể (trong các ví dụ trên, chuỗi là “da”). Điều gì sẽ xảy ra nếu bạn cần tìm các giá trị chỉ chứa một giá trị? Ví dụ: bạn có thể muốn trả lại tất cả khách hàng chỉ chứa chuỗi “ia”. Một lần nữa, chúng ta bắt đầu với bảng cơ sở dữ liệu Khách hàng.

CustomerId

First_name

Last_name

Thành phố

Bang

321

Frank

Loe

Dallas

TX

455

Chỉnh sửa

Thompson

Atlanta

GA

456

Chỉnh sửa

Thompson

Atlanta

GA

457

Joe

Smith

Miami

FL

458

Frank

Doe

Dallas

TX

Câu lệnh SQL sau tìm kiếm bất kỳ khách hàng nào trong thành phố có chứa giá trị “ia”.

CHỌN * TỪ Khách hàng

NƠI THÀNH PHỐ THÍCH ‘% ia% ‘

Câu lệnh trên được dịch là “cung cấp cho tôi tất cả các bản ghi trong đó giá trị thành phố chứa giá trị” ia “ở bất kỳ đâu trong chuỗi. Lưu ý biểu tượng phần trăm ở đầu và cuối. Điều này khác với các ví dụ trước đó vừa được sử dụng” da%. “” Da% “cho SQL biết rằng chuỗi phải bắt đầu bằng” da “và không được bao gồm bất kỳ ký tự tiền tố nào. Câu lệnh”% ia% “cho SQL biết rằng các ký tự” ia “có thể ở bất kỳ đâu trong chuỗi .

Kết quả tập dữ liệu như sau.

CustomerId

First_name

Last_name

Thành phố

Bang

457

Joe

Smith

Miami

FL

Ký tự gạch dưới (_) là một ký tự đại diện khác được sử dụng để cho SQL biết rằng chỉ một ký tự có thể được đặt trước hoặc kết thúc bằng một chuỗi chuỗi cụ thể. Ví dụ: câu lệnh SQL sau chỉ trả về các bản ghi có một ký tự trước “iami”.

CHỌN * TỪ Khách hàng

NƠI THÀNH PHỐ NHƯ ‘_iami ‘

Xem Thêm  Cách thêm JavaScript vào html - cách kết nối tập tin js với html

Sự khác biệt giữa ký tự phần trăm và dấu gạch dưới là ký tự phần trăm cho SQL biết rằng bất kỳ số ký tự nào cũng có thể đứng trước hoặc theo sau chuỗi đã cho nhưng dấu gạch dưới có nghĩa là chỉ một ký tự có thể đứng trước hoặc theo sau chuỗi. Bộ ghi tương tự được trả về như trên. Tuy nhiên, giả sử bạn có một thành phố có giá trị là “Hmiami” trong bảng Khách hàng. Bản ghi này sẽ bị loại trừ, vì có nhiều hơn một ký tự đứng trước chuỗi đã cho.

Sử dụng bảng dữ liệu Khách hàng đầu tiên được liệt kê trong bài viết này, bạn lại có tập hợp kết quả sau từ câu lệnh SQL ở trên.

CustomerId

First_name

Last_name

Thành phố

Bang

457

Joe

Smith

Miami

FL

Toán tử NOT, LIKE và IN là những cách hiệu quả để truy vấn các bản ghi có độ phức tạp cao hơn trong các câu lệnh SQL của bạn. Các toán tử này có thể giúp bạn trả về một tập hợp bản ghi chính xác hơn so với các cụm từ mệnh đề WHERE đơn giản hơn.


Xem thêm những thông tin liên quan đến chủ đề như không trong sql

Bài 10: [Học SQL từ đầu] – Hướng Dẫn Sữ Dụng Đệ Quy Trong SQL Server

  • Tác giả: GROUP PTC
  • Ngày đăng: 2022-05-03
  • Đánh giá: 4 ⭐ ( 5646 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Hướng dẫn sữ dụng đệ quy trong sql server

Mệnh đề UNION trong SQL

  • Tác giả: viettuts.vn
  • Đánh giá: 3 ⭐ ( 4239 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Mệnh đề UNION trong SQL được sử dụng để kết hợp các kết quả của hai hoặc nhiều câu lệnh SELECT mà không cần trả về bất kỳ hàng trùng lặp nào.

Kiểu Dữ Liệu True False Trong Sql Server Giống Như Trong Mysql Không?

  • Tác giả: thosanhuyenthoai.vn
  • Đánh giá: 3 ⭐ ( 7623 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Cách thực hành tốt nhất để tạo trường yes/notức là Booleankhi chuyển đổi từ một access databasehoặc nói chung là gì? Tương đương là một BITlĩnh vực, Trong SQLbạn sử dụng 0và 1để đặt trường bit (giống như trường có / không trong Access)

SQL sẽ phổ biến như Excel? Hướng dẫn tự học các cấu phần quan trọng của SQL cho người làm phân tích

  • Tác giả: madzynguyen.com
  • Đánh giá: 5 ⭐ ( 1211 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Đâu đấy Maz muốn mang đến một góc nhìn rõ ràng hơn, WHY (vì sao bạn cần tìm hiểu SQL?), WHAT (SQL là cái gì?), HOW (Học SQL như thế nào cho hiệu quả?) và WHERE (học ở đâu?).

Truy vấn dữ liệu trong sql (Bài 5)

  • Tác giả: giasutinhoc.vn
  • Đánh giá: 3 ⭐ ( 9701 lượt đánh giá )
  • Khớp với kết quả tìm kiếm:

Tổng hợp những câu lệnh SQL cơ bản

  • Tác giả: topdev.vn
  • Đánh giá: 4 ⭐ ( 3542 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Các phiên bản của SQL Server: Enterprise, Personal, Desktop, Developer,.. Các bộ phận của SQL Server: Enterprise Manager, Query Analyzer, Books Online,..

Nguyên nhân và cách tối ưu câu truy vấn SQL trong lập trình

  • Tác giả: www.nanosoft.vn
  • Đánh giá: 4 ⭐ ( 4810 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Qua quá trình làm việc, cũng như tìm hiểu trên mạng, tôi sưu tầm một số kinh nghiệm sau:

Xem thêm các bài viết khác thuộc chuyên mục: Kiến thức lập trình

By ads_php