在MySQL中强制排序VARCHAR数据
如果发现在MySQL数据库的VARCHAR列中排序数据时遇到问题,则可以尝试以下技巧。
假设您具有值1,200,30,4000和5,并且已将它们按此顺序插入数据库中。在此数据上运行以下查询时:
SELECTnumbersFROMTABLEORDERBYnumbers;
可以看到以下输出。
1 200 30 4000 5
尽管它代表顺序,但显然这不是正确的顺序。您可以通过在尝试排序的列后面使用“+0”来强制自然排序。
SELECTnumbersFROMTABLEORDERBYnumbers+0;
这将产生以下输出,该输出按照您希望对一组数字进行排序的方式进行排序。
1 5 30 200 4000
在本质上,这与强制转换number列相同,如以下查询所示。
SELECTNUMBERFROMtest.testsORDERBYCAST(NUMBERASUNSIGNED);
但是,如果添加一些文本数据会怎样?让我们获取原始数据集并向其中添加两个文本项。它们是“1,000”和“文本”。使用默认排序,这两个文本项不受影响,并按照添加的顺序显示。当使用“+0”方法时,任何稍为数字的内容都会放入列表中,而其他任何内容都将放在数据的开头。
text 1 1,000 5 30 200 4000
使用强制转换方法时,顺序完全相同,但是在这种情况下,MySQL尝试强制转换非数值时会抛出一些异常。
如果要将数字存储在数据库表中,并且必须使用此查询来获取正确的顺序,则可能需要考虑更改表,以便将这些值存储为整数。
热门推荐
10 八一幼儿祝福语大全简短
11 公司乔迁食堂祝福语简短
12 婚礼结束聚餐祝福语简短
13 儿媳买车妈妈祝福语简短
14 毕业送礼老师祝福语简短
15 同事辞职正常祝福语简短
16 恭贺新婚文案祝福语简短
17 金店立秋祝福语简短英文
18 婆婆高寿祝福语大全简短