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
.