我想点这样的一套:
不像正常的升序:
换句话说,我有一个带有一些文字的列,有时候还有一个数字。我希望所有带有数字的字段最后按数字降序排序,但前导文本仍然必须按升序排序。
字符串不只是1个字符长,但长度未知,数字也不仅仅是1个字符长,而且长度未知,并且不能保证在字符串末尾可能看起来像:随机事件,第12次“
如果我有一个类似“随机事件,第12次”的字符串,我希望它出现在我的结果之前:“随机事件,第11次”。
希望有一些SQL人知道答案:)
答案 0 :(得分:1)
你可以创建一个隔离你想要订购的号码的功能。例如。像这样的东西(在MySQL strip non-numeric characters to compare找到)
DROP FUNCTION IF EXISTS STRIP_NON_DIGIT;
DELIMITER $$
CREATE FUNCTION STRIP_NON_DIGIT(input VARCHAR(255))
RETURNS INT
DETERMINISTIC
BEGIN
DECLARE output VARCHAR(255) DEFAULT '';
DECLARE iterator INT DEFAULT 1;
WHILE iterator < (LENGTH(input) + 1) DO
IF SUBSTRING(input, iterator, 1) IN ( '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' ) THEN
SET output = CONCAT(output, SUBSTRING(input, iterator, 1));
END IF;
SET iterator = iterator + 1;
END WHILE;
RETURN output;
END
$$
现在运行你的sql:
通过myString SELECT STR FROM myTable命令,STRIP_NON_DIGIT(myString)DESC;
答案 1 :(得分:-1)
select * from table name where "your query " and " " order by asc;
或者如果在降序中使用“dec” 您希望降序或升序的列放在“”
中