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

MySQL में मानदंड के रूप में हेक्स कोड के साथ रंग द्वारा ऑर्डर करें

आप तरंग दैर्ध्य द्वारा हेक्स कोड को सॉर्ट करना चाहते हैं, यह मोटे तौर पर ह्यू-वैल्यू पर मैप करता है। एक हेक्सकोड को छह वर्ण स्ट्रिंग के रूप में दिया गया है:RRGGBB

आपको बस एक फ़ंक्शन बनाने की ज़रूरत है जो एक हेक्सकोड स्ट्रिंग लेता है और ह्यू मान को आउटपुट करता है, यहाँ सूत्र है इस Math.SO उत्तर से :

आर' =आर/255

जी' =जी/255

बी' =बी/255

सीमैक्स =अधिकतम (आर', जी', बी')

सीमिन =मिनट (आर', जी', बी')

=सीमैक्स - सीमिन

मैं देखना चाहता था कि क्या यह काम करेगा, इसलिए मैंने रूबी में एक नमूना कार्यक्रम तैयार किया, यह आरजीबी-स्पेस से समान रूप से 200 यादृच्छिक रंगों का नमूना लेता है, और उन्हें क्रमबद्ध करता है, आउटपुट इंद्रधनुष जैसा दिखता है!

यहाँ रूबी स्रोत है:

require 'paint'

def hex_to_rgb(hex)
  /(?<r>..)(?<g>..)(?<b>..)/ =~ hex
  [r,g,b].map {|cs| cs.to_i(16) }
end

def rgb_to_hue(r,g,b)
  # normalize r, g and b
  r_ = r / 255.0
  g_ = g / 255.0
  b_ = b / 255.0

  c_min = [r_,g_,b_].min
  c_max = [r_,g_,b_].max

  delta = (c_max - c_min).to_f

  # compute hue
  hue = 60 * ((g_ - b_)/delta % 6) if c_max == r_
  hue = 60 * ((b_ - r_)/delta + 2) if c_max == g_
  hue = 60 * ((r_ - g_)/delta + 4) if c_max == b_

  return hue
end

# sample uniformly at random from RGB space
colors = 200.times.map {  (0..255).to_a.sample(3).map { |i| i.to_s(16).rjust(2, '0')}.join   }

# sort by hue
colors.sort_by { |color| rgb_to_hue(*hex_to_rgb(color)) }.each do |color|
  puts Paint[color, color]
end

ध्यान दें, सुनिश्चित करें कि gem install paint रंगीन टेक्स्ट आउटपुट प्राप्त करने के लिए।

यह रहा आउटपुट:

इसे SQL उपयोगकर्ता-परिभाषित फ़ंक्शन और ORDER BY RGB_to_HUE(hex_color_code) के रूप में लिखना अपेक्षाकृत सीधा होना चाहिए, हालाँकि, मेरा SQL ज्ञान बहुत बुनियादी है।

संपादित करें:मैंने यह प्रश्न dba.SE पर पोस्ट किया है रूबी को SQL उपयोगकर्ता परिभाषित फ़ंक्शन में बदलने के बारे में।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. दो mysql कॉलम जोड़ने और कुल वापस करने में समस्या

  2. एक विदेशी कुंजी के रूप में केवल एक वर्चर के साथ MySQL तालिका

  3. Dreamweaver में PHP टेस्ट सर्वर कैसे सेट करें?

  4. mysql में उपयोगकर्ताओं के टाइमज़ोन को कैसे स्टोर करें?

  5. खोज परिणामों की रैंकिंग के लिए SQL के साथ सहायता चाहिए