MySQL का उपयोग करके, मैं स्पेनिश में गाने की एक सूची का चयन कर रहा हूं जिसे मैं सॉर्ट करना चाहता हूं। यहां क्वेरी द्वारा लौटाए गए नामों की एक सूची दी गई है:mysql या php में utf वर्णों का उपयोग करके सॉर्ट करें? सर्वोत्तम समाधान
- ¡डेसीरेविला!
- Alhambra
- 123 pasitos
- अफ्रीका
- Arroz
- decir
क्रमबद्ध सूची इस तरह दिखना चाहिए:
- 123 pasitos
- अफ्रीका +०१२३५१६४१०
- अलामबरा
- अररोज
- ¡डेसीरेविला!
- decir
अनुसंधान मैं पढ़ा है की सब के बाद, मैं यह निष्कर्ष निकाला गया है कोई उचित तरीका यह MySQL का उपयोग कर प्राप्त करने के लिए नहीं है। मैंने collation, charset, आदि की कोशिश की है ... लेकिन चरित्र वांछित कोई तरीका नहीं है,?, आदि ... मेरे वांछित परिणाम के अनुसार क्रमबद्ध कर सकते हैं। यहां तक कि एए को जिस तरह से मैं चाहता हूं उसे हल नहीं किया गया है ...
प्रश्न 1: क्या यह एक उचित निष्कर्ष है?
मेरा मानना है कि इसे प्राप्त करने का एकमात्र तरीका php में एक सरणी में परिणाम पास कर रहा है और उसके बाद एक कस्टम फ़ंक्शन का उपयोग करके सरणी को सॉर्ट करें ... यह सब फ़ंक्शन यूजर (मूल्य से सॉर्ट करने की आवश्यकता है और मैं नहीं ' मुख्य सहयोग को बनाए रखने के बारे में परवाह नहीं है)। इसके साथ कुछ:
function normalize($a, $b) {
if ($a == $b) {
return 0;
}
return ($a < $b) ? -1 : 1;
}
$tracks = array();
while ($row = $result->fetch_assoc()) {
$tracks[] = $row;
}
usort($tracks, 'normalize');
प्रश्न 2: क्या यह कस्टम सॉर्टिंग प्राप्त करने का सबसे अच्छा तरीका है?
प्रश्न 3::
यहाँ जहां मैं एक दीवार से टकराने हूँ मैं पता नहीं कैसे मेरी जरूरतों के हिसाब से नामों को सॉर्ट करने सामान्य समारोह बनाना होगा। मैं कुछ पात्रों (¡,?, ',!, ¿) को कैसे अनदेखा करूं और मैं अन्य पात्रों को प्राकृतिक समकक्ष (Á -> ए, ए -> ई, आदि ..) के साथ कैसे बदलूं मेरा मानना है कि कुछ अनदेखा करके पात्रों और दूसरों की जगह, मैं सॉर्टिंग प्राप्त कर सकता हूं जिसके लिए मैं loojing कर रहा हूँ ...
प्रश्न 4: यह सब समझ में आता है? क्या मैं सही रास्ते पर हूं?
आपकी सभी सलाह के लिए अग्रिम धन्यवाद। मार्को
क्या मैं एक साझा मेजबान पर हूं, तो मैं अपना स्वयं का संयोजन MySQL में जोड़ सकता हूं? – Marco
@ मार्को: यह होस्टिंग प्रदाता पर निर्भर करता है लेकिन मैं शायद "शायद नहीं" की तरफ झुकता हूं। यदि आप नहीं कर सकते हैं तो 'sortable_title' दृष्टिकोण लगभग नौकरी भी मिल जाएगी। –
मैंने प्रोग्रामिंग को दोनों विधियों को समाप्त कर दिया है और sortable_title के साथ एक बहुत अधिक, तेज़ है। मैंने mysql समाधान के लिए एक टाइमर और औसत परिणाम जोड़े हैं: 0.00 9 सेकंड ... PHP समाधान: 0.12 सेकंड। अजीब चीज यह है कि मैंने सूची को कैश किया है (ob_start() .. विधि का उपयोग करके) और कैशिंग ध्यान देने योग्य धीमी है ... मुझे लगता है कि, इस विशिष्ट मामले में, कैश की गई फ़ाइल खोलने से धीमी गति होती है और फिर क्वेरी निष्पादित होती है। ..आपको आश्चर्य होता है कि PHP में कैशिंग हमेशा आवश्यक नहीं है ... – Marco