Tôi muốn biết nếu có cách nào, trong Oracle SQL, để so sánh hai chuỗi cho các điểm tương đồng khác với =
hoặc like
. Ví dụ, SQL Server có một hàm difference(str1, str2)
so sánh hai chuỗi và đưa ra một đánh giá tương tự (0 đến 4). Không chính xác những gì tôi muốn nhưng điều đó vẫn sẽ cực kỳ hữu ích.So sánh chuỗi nâng cao trong Oracle SQL
Tôi đã hy vọng đặc biệt cho chức năng hoặc các phương pháp rằng sẽ:
- Hãy so sánh một chuỗi ký tự bằng ký tự (trả về số các trận đấu chính xác)
- Nói bao nhiêu ký tự nằm trong một chuỗi, nhưng tại địa điểm sai
Việc sử dụng chính sẽ là cho các chuỗi có cùng độ dài, chứa số (ID, số điện thoại, v.v.) cho mục đích của tôi, tôi sẽ sử dụng nó để tìm các kết quả phù hợp có thể etters/số có thể đã được transposed. Soundex(string)
hoạt động tốt cho chuỗi alpha nhưng dường như bỏ qua các số (vì lý do chính đáng).
Tôi không có quyền tự tạo các chức năng, nhưng nếu ai đó biết phương pháp làm điều đó, tôi muốn nghe nó. Một giải pháp để so sánh char-to-char (mà chỉ hoạt động nếu bạn biết số MAX ký tự) là:
--For char-to-char counts
Decode(substr(ID1,1,1), substr(ID2,1,1), 1, 0) +
Decode(substr(ID1,2,1), substr(ID2,2,1), 1, 0) +
[...]
Decode(substr(ID1,N,1), substr(ID2,N,1), 1, 0)
Nhưng đó là khoảng không thanh nha như bạn có thể nhận được.
Mọi trợ giúp sẽ được đánh giá cao.
bản sao có thể có của [Tìm kết quả phù hợp nhất cho giá trị chuỗi - Oracle/Java] (http://stackoverflow.com/questions/8068162/finding-best-matches-for-a-string-value-oracle-java) –