2012-08-04 22 views
8

मुझे नहीं पता कि यह कौन सा फ़ंक्शन कहलाता है लेकिन मैं एक पंक्ति का चयन करने की कोशिश कर रहा हूं जो आउटपुट के लिए सबसे अधिक वर्णों से मेल खाता है। मैंने जो कोशिश की है वह यहां है।mysql - सबसे अधिक वर्णों का चयन करें

select * from table where title like '%alotofcharactershere%' limit 1 

ऊपर केवल के पूरे शब्द के लिए काम करता है: alotofcharactershere

यह इसे तोड़ने के लिए के लिए क्या मैं सच में चाहते हैं: एक एल ओ टी ओ च खो ज एक आर एक सी टी ई आर एस एच ई आर ई और एक पंक्ति दे रही है सबसे मिलान कैरेक्टर हैं कि लगता है।

अगर आप जानते हैं कि मैं किस बारे में बात कर रहा हूं तो कृपया कृपया मदद करें। पहले ही, आपका बहुत धन्यवाद।

उत्तर

1

मैं चारों ओर खुदाई कर रहा हूं और मैं एक एसक्यूएल विशेषज्ञ नहीं हूं लेकिन मैं मैच के मिलान के बाद चार लंबाई से ऑर्डर करने की लाइनों के आसपास सोच रहा था।

कुछ की तरह: SELECT * FROM your_table ORDER BY LENGTH(REGEXP_REPLACE(title, '[^abcdefg]', ''));

2 समस्याओं हालांकि। यह पाया जाने वाले सबसे अलग वर्णों से मेल नहीं खाता है। तो एएएए एबीसी की तुलना में अधिक मूल्य का होगा। और मुझे लगता है कि आप का मतलब है कि आप एबीसी को उच्च मूल्य के रूप में चाहते हैं। दूसरी समस्या शायद सबसे बड़ी है, mySQL इस regex का समर्थन नहीं करता है। और सुनिश्चित नहीं है कि कुछ भी करता है। लेकिन मुझे यह आलेख मिला: https://launchpad.net/mysql-udf-regexp

हालांकि मुझे लगता है कि वास्तव में कुछ सरल और कुछ ऐसा होना चाहिए जो वास्तव में बॉक्स से बाहर काम करता है, यह उत्तर बॉक्स के बारे में सोचने के लिए किसी के मन को ट्रिगर कर सकता है।

वहाँ भी मिलती है की एक बहुत कुछ के साथ एक समाधान हो सकता है लेकिन यह है कि सब कुछ का चयन करने से सबसे अधिक संभावना धीमी है और php (या समान रूप से)

+0

मेरा मतलब है, हम हमेशा पहले कुछ पात्रों को सब्सक्राइब कर सकते हैं और एक नापसंद कर सकते हैं, लेकिन मैं कुछ नया करना चाहता था इसलिए यह इसका कारण बनता है .... – thevoipman

1

यह स्पष्ट नहीं है कि तुम क्या इसलिए मुझे आश्चर्य है अगर पूरा करने के लिए कोशिश कर रहे हैं में यह सॉर्ट आपने Full Text Searches में देखा है। प्रासंगिकता खोजने की क्षमता आपको कुछ विचार या विकल्प दे सकती है।