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

Cách hoạt động của hàm SQL Server DIFFERENCE ()

Bài viết này nhằm giúp bạn hiểu về DIFFERENCE() , là một hàm T-SQL có sẵn trong SQL Server, Azure, v.v.

Chìa khóa để hiểu DIFFERENCE() là để hiểu cách Soundex hoạt động (hoặc trong ngữ cảnh của SQL Server, cách SOUNDEX() chức năng hoạt động). Điều này là do DIFFERENCE() hàm trả về sự khác biệt giữa các giá trị Soundex giữa hai chuỗi.

Giá trị Soundex dài bốn ký tự. Nếu hai từ phát ra âm thanh giống nhau, chúng sẽ chia sẻ cùng một giá trị Soundex bốn ký tự. Nếu chúng nghe giống nhau (nhưng không giống nhau), giá trị Soundex của chúng có thể dùng chung một số ký tự nhưng không phải tất cả. Ví dụ:giá trị Soundex của chúng có thể có hai ký tự giống nhau và hai ký tự khác nhau. Nếu hai từ nghe hoàn toàn khác nhau, thì không ký tự nào trong các giá trị Soundex tương ứng của chúng sẽ giống nhau.

DIFFERENCE() hàm trả về một giá trị nằm trong khoảng từ 0 thông qua 4 . Giá trị này đại diện cho số ký tự trong các giá trị Soundex giống nhau. 0 cho biết yếu hoặc không tương tự và 4 cho biết mức độ tương đồng mạnh hoặc các giá trị giống nhau.

Cú pháp

Đầu tiên, đây là cú pháp:

DIFFERENCE ( character_expression , character_expression )

Như đã chỉ ra, hàm này chấp nhận hai đối số. Các mã Soundex của mỗi biểu thức ký tự được so sánh và kết quả được trả về.

Ví dụ - Kết hợp Chính xác

Dưới đây là một ví dụ về điều gì sẽ xảy ra khi cả hai chuỗi âm thanh giống nhau (tức là chúng có cùng giá trị Soundex):

SELECT DIFFERENCE('Two','Too');

Kết quả:

4

Kết quả là 4 , là giá trị cao nhất có thể. Điều này có nghĩa là có sự tương đồng mạnh mẽ giữa hai chuỗi (chừng nào giá trị Soundex của chúng tăng lên).

Nếu bạn đang thắc mắc số 4 ở đâu đến từ đâu, hãy xem đoạn mã sau:

SELECT 
    SOUNDEX('Two') AS Two,
    SOUNDEX('Too') AS Too;

Kết quả:

Two   Too 
----  ----
T000  T000

Trong ví dụ này, SOUNDEX() được sử dụng để trả về mã Soundex cho mỗi từ. Hóa ra, cả hai từ đều có cùng mã Soundex (T000 ). Và bởi vì tất cả bốn ký tự của mã Soundex đều giống nhau, DIFFERENCE() trả về 4 .

Ví dụ - Độ giống nhau thấp

Dưới đây là một ví dụ về cách nó hoạt động khi các chuỗi có độ giống nhau thấp hơn:

SELECT DIFFERENCE('Tea','Coffee');

Kết quả:

2

Kết quả là 2 , nằm ở giữa. Các chuỗi âm thanh không hoàn toàn giống nhau, nhưng chúng có một số điểm tương đồng.

Và như với ví dụ trước, chúng ta có thể xem kết quả này đến từ đâu bằng cách chạy đoạn mã sau:

SELECT 
    SOUNDEX('Tea') AS Tea,
    SOUNDEX('Coffee') AS Coffee;

Kết quả:

Tea   Coffee
----  ------
T000  C100

Vì vậy, chúng ta có thể thấy rằng chỉ có hai trong số các ký tự Soundex là giống nhau giữa các từ này. Do đó, DIFFERENCE() kết quả là 2 .

Ví dụ - Không giống nhau

Dưới đây là một ví dụ về cách hoạt động khi các chuỗi có điểm yếu hoặc không giống nhau:

SELECT DIFFERENCE('Tree','Captivated');

Kết quả:

0

Kết quả là 0 , có nghĩa là các chuỗi có độ tương đồng rất yếu hoặc không có.

Và đây là mã Soundex cho hai từ này:

SELECT 
    SOUNDEX('Tree') AS Tree,
    SOUNDEX('Captivated') AS Captivated;

Kết quả:

Tree  Captivated
----  ----------
T600  C131

Vì vậy, trong trường hợp này, không có ký tự nào giống nhau, do đó là DIFFERENCE() kết quả của 0 .


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Các chỉ mục của SQL Server - tăng dần hoặc giảm dần, nó tạo ra sự khác biệt gì?

  2. Tìm hiểu xem một đối tượng có phải là một bảng do người dùng xác định trong SQL Server với OBJECTPROPERTY ()

  3. Cách chỉ trả về Ngày từ kiểu dữ liệu Ngày giờ của Máy chủ SQL

  4. Điều gì xảy ra với Id khóa chính khi nó vượt quá giới hạn?

  5. Khóa duy nhất của máy chủ Sql có phải cũng là một chỉ mục không?