我有一张表,我希望对该表中的列进行排序。但我无法得到排序顺序,因为字符串的第一位有不同种类的字符。其中一些有水平标签,其中一些有空格,有些是空的。我尝试过修剪方法,但它对我不起作用。我在该表中有近20万条记录。我无法更新表格。我需要一个select查询,它应该让结果忽略所有不必要的东西,并且应该对列进行排序。
答案 0 :(得分:1)
我认为这可能有效
SELECT *
FROM table_name
ORDER BY IF(coloum_name LIKE "_%", substr(coloum_name, 1), coloum_name);
说明:
我们使用IF
函数从字符串的开头剥离第一个字符,然后将字符串返回到ORDER BY
子句。对于更复杂的规则,我们可以创建一个用户定义的函数,并将其放在ORDER BY
子句中。然后你会...... ORDER BY MyFunction(coloum_name)
对于SQL Server,请执行以下操作:
SELECT *
FROM table_name
ORDER BY CASE WHEN coloum_name LIKE "_%" THEN substr(coloum_name, 1) ELSE coloum_name END