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

Cách hàm CHARINDEX () hoạt động trong SQL Server (T-SQL)

Trong SQL Server, bạn có thể sử dụng T-SQL CHARINDEX() hàm để tìm vị trí bắt đầu của một biểu thức ký tự trong một biểu thức ký tự khác.

Bạn cung cấp cả hai biểu thức ký tự làm đối số. Bạn cũng có thể cung cấp một đối số tùy chọn để chỉ định một vị trí để bắt đầu tìm kiếm.

Cú pháp

Cú pháp như sau:

 CHARINDEX (expressionToFind, expressionToSearch [, start_location]) 

Ở đâu expressionToFind là biểu thức bạn muốn tìm trong chuỗi khác và expressionToSearch là chuỗi khác. start_location tùy chọn có thể được sử dụng để chỉ định một vị trí trong expressionToSearch để bắt đầu tìm kiếm.

Lưu ý rằng chỉ vị trí của lần xuất hiện đầu tiên được trả về.

Ví dụ

Đây là một ví dụ:

 SELECT CHARINDEX ('Bob', 'Bob thích bia. Bob cũng thích thịt bò.') AS Kết quả; 

Kết quả:

 + ---------- + | Kết quả || ---------- || 1 | + ---------- + 

Trong ví dụ này, đối số đầu tiên là Bob , có nghĩa là chúng tôi đang tìm kiếm đối số thứ hai cho Bob . Kết quả là 1 vì đó là vị trí mà Bob xuất hiện đầu tiên trong đối số thứ hai.

Bạn cũng có thể nhận thấy rằng Bob thực sự xuất hiện hai lần trong chuỗi, nhưng chỉ vị trí của kết quả khớp đầu tiên được trả về.

Không phù hợp

Nếu đối số thứ hai không chứa Bob kết quả sẽ là 0 .

 SELECT CHARINDEX ('Bob', 'Kate thích bia. Kate cũng thích thịt bò.') AS Kết quả; 

Kết quả:

 + ---------- + | Kết quả || ---------- || 0 | + ---------- + 

Chỉ định vị trí bắt đầu

Bạn có thể (tùy chọn) chỉ định vị trí bắt đầu cho tìm kiếm. Điều này có nghĩa là SQL Server sẽ bỏ qua bất kỳ sự kiện nào xảy ra trước vị trí bắt đầu đó. Tuy nhiên, kết quả vẫn được báo cáo dựa trên vị trí của nó trong toàn bộ chuỗi (không phải từ vị trí bắt đầu đã chọn của bạn).

Dưới đây là một ví dụ để chứng minh:

 SELECT CHARINDEX ('Bob', 'Bob thích bia. Bob cũng thích thịt bò.', 16) AS Kết quả; 

Kết quả:

 + ---------- + | Kết quả || ---------- || 17 | + ---------- + 

Trong ví dụ này, chúng tôi bắt đầu tìm kiếm ở vị trí 16 (tình cờ là khoảng trắng trước Bob thứ 2 ). Kết quả là lần xuất hiện đầu tiên của Bob bị bỏ qua và vị trí của vị trí thứ hai được trả lại. Và chúng ta có thể thấy rằng vị trí của nó là 17 ký tự kể từ đầu chuỗi (mặc dù nó chỉ là một ký tự từ nơi chúng tôi bắt đầu tìm kiếm).

Phân biệt chữ hoa chữ thường

Bạn có thể thực hiện tìm kiếm phân biệt chữ hoa chữ thường một cách rõ ràng bằng cách thêm COLLATE mệnh đề SELECT của bạn tuyên bố:

Dưới đây là một ví dụ bao gồm tìm kiếm phân biệt chữ hoa chữ thường và không phân biệt chữ hoa chữ thường:

 SELECT CHARINDEX ("Bia", "Bob thích bia." COLLATE Latin1_General_CS_AS) AS "Phân biệt chữ hoa chữ thường", CHARINDEX ("Bia", "Bob thích bia." COLLATE Latin1_General_CI_AS) AS "Phân biệt chữ hoa chữ thường";  

Kết quả:

 + ------------------ + -------------------- + | Phân biệt chữ hoa chữ thường | Không phân biệt chữ hoa chữ thường || ------------------ + -------------------- || 0 | 11 | + ------------------ + -------------------- + 

Cái đầu tiên phân biệt chữ hoa chữ thường vì _CS (trong đối chiếu) là viết tắt của Case-Sensitive. Cái thứ hai không phân biệt chữ hoa chữ thường vì _CI là viết tắt của Phân biệt chữ hoa chữ thường.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Spotlight Cloud Basic:Công cụ giám sát hiệu suất cơ sở dữ liệu miễn phí tốt nhất

  2. Kích hoạt để ngăn Chèn cho dữ liệu trùng lặp của hai cột

  3. Làm cách nào để giữ một phiên bản kết nối SQL Server mở cho nhiều yêu cầu trong C #?

  4. Cách kết nối với cơ sở dữ liệu máy chủ SQL từ ứng dụng Windows 10 UWP

  5. Trạng thái và phiên hoạt động của SQL Server