【问题标题】:Sorting hex color values in MySQL在 MySQL 中对十六进制颜色值进行排序
【发布时间】:2019-07-09 18:36:48
【问题描述】:

我有一个名为 hexcodetable 的 MySQL 表,其中只有一列名为 VARCHAR(100) 类型的 hexcode。该表包含所有十六进制颜色代码。这些行填充为六个字符的十六进制数字,前面带有 #。例如,#25F412。我们如何将所有行从最黑到最白排序,使得第一行是#000000,第二行是#000001,最后一行是#FFFFFF?请注意,我的意思不一定是数字排序。

【问题讨论】:

  • order by hexcode 不起作用?
  • 绝对不是。返回 #000000 作为第一行是正确的,但是它开始出错,它返回第二行作为 #10000 而它应该是 #000001
  • 如果列是 VarChar(顺便说一句,为什么它是 VarChar(100) 而不是 Char(6) 或二进制?)它将正确排序:#000000、#000001、#000002
  • Char(6) 不起作用。记住行中的所有值都以 # 开头。我猜 VARCHAR(100) 只是为了安全起见。
  • @MugaS。 . . . order by hexcode 在我尝试时有效:dbfiddle.uk/…

标签: mysql sql colors hex


【解决方案1】:

您需要按十六进制值进行数字排序。怎么样

Select hexcode from hexcodetable order by Conv(substring(hexcode,2,6),16,10)

【讨论】:

  • MySQL中的子字符串从1开始,而不是0,必须是substring(hexcode,2,6)
  • 谢谢瓦特夫。我错过了。
  • 您将一个字符串转换为另一个去掉前导零的字符串,然后进行排序:1, 11, 111, 2。事实上,原始数据排序正确。
  • 感到困惑。您的评论与我提出的答案无关,即通过将十六进制转换为基数 10 来按十六进制值排序。
猜你喜欢
  • 2016-09-25
  • 2011-11-18
  • 1970-01-01
  • 2013-12-17
  • 2014-07-03
  • 1970-01-01
  • 2014-03-31
  • 2014-03-22
  • 2019-10-29
相关资源
最近更新 更多