2017-05-26 54 views
0

我正在MySQLWorkbench中使用order by子句运行查询,并且我的返回表不是按字母顺序排列的。我的查询是:SQL Order by子句不按字母顺序返回

SELECT property_value FROM job_shared_context 
WHERE property_key = "case-name" 
Order BY property_value asc 

我返回表:

"cqroneponv;,'c" 
"padding Case" 
"pwTest1" 
"pwTest5" 
"test 1" 
"test 1" 
"Test Case 12" 
"Test Case 2" 
"test" 
"test" 
"Test1" 
"Turtle Case" 

我承担线9的测试和10将是“pwTest5”和“测试1”之间的字母顺序。

+3

这看起来是按字母顺序对我来说,不区分大小写。不要告诉我们行号,你能清楚你认为哪里不正确?另外,哪个DBMS? mysql <> sql服务器。 –

+0

是否有可能只是“测试”的实例(不知道为什么你不能指出单词)在其中有非打印字符? – Uueerdo

+0

@SeanLange mysql。从我对字母顺序的假设中应该命令“cqroneponv;,'c”>“padding Case”>“pwTest1”>“pwTest5”>“test”>“test”>“test 1”>“test 1”>“测试用例12“>”测试用例2“>”Test1“>”Turtle Case“ –

回答

0

如果您的字符串中包含引号或任何其他非字母数字符号,则它们将包含在排序计算中。它是用之类的东西空格,破折号等明显...

要明确忽略他们在查询中,这样的事情应该工作:

ORDER BY TRIM(BOTH '"' FROM property_value)

当然,你可以修剪通过多个字符嵌套调用TRIM像这样:

ORDER BY TRIM(BOTH '_' FROM TRIM(BOTH '"' FROM property_value))

+0

谢谢!!!极好的解决方案 –