PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

क्या कोई मल्टीबाइट-जागरूक Postgresql Levenshtein है?

एक विशेषक के साथ 'ए' एक वर्ण अनुक्रम है, यानी a का संयोजन और एक संयोजन चरित्र, विशेषक ̨ :E'a\u0328'

एक समान पूर्वनिर्मित वर्ण है ą :E'\u0105'

इसका समाधान सामान्यीकरण होगा। यूनिकोड स्ट्रिंग्स, यानी संयोजन वर्ण अनुक्रम को उनकी तुलना करने से पहले पहले से तैयार किए गए वर्ण में बदलने के लिए।

दुर्भाग्य से, Postgres में एक अंतर्निहित यूनिकोड सामान्यीकरण फ़ंक्शन नहीं लगता है, लेकिन आप पीएल/पर्ल या PL/Python भाषा एक्सटेंशन।

उदाहरण के लिए:

create extension plpythonu;

create or replace function unicode_normalize(str text) returns text as $$
  import unicodedata
  return unicodedata.normalize('NFC', str.decode('UTF-8'))
$$ language plpythonu;

अब, वर्ण अनुक्रम के रूप में E'a\u0328' समतुल्य पूर्व-निर्मित वर्ण E'\u0105' . पर मैप किया गया है unicode_normalize . का उपयोग करके , लेवेनशेटिन दूरी सही है:

select levenshtein(unicode_normalize(E'a\u0328'), 'x');
levenshtein
-------------
           1



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. सक्रिय रिकॉर्ड, रेल और पोस्टग्रेज के साथ कई डुप्लिकेट फ़ील्ड वाली पंक्तियाँ खोजें

  2. JDBC के साथ अद्यतन के लिए चयन करें?

  3. SQL में अच्छी तरह से मुद्रित प्रारूप में सरणियों का चयन करना

  4. PostgreSQL में निर्दिष्ट कॉलम द्वारा समूहित करें

  5. पोस्टग्रेज में कॉलम में इनपुट को सेनिटाइज करें