1

注意:由于数据库表中存在我的输入数据,我已经编辑了我的问题。

我有一个表,它包含 varchar 数据。该列中存在的数据是这样的。

"bcd"
cde
abcd
'xxx'
(zzz)

现在我想按字母顺序排序。我试过这个查询

select my_col from tbl_user order by ltrim(REPLACE(my_col,'"', '')) ASC

它的输出如下:

'xxx'
(zzz)
abcd
"bcd"
cde

但我想要的输出是,意味着在排序时必须按照字母顺序排序,无论是否"存在。

abcd
"bcd"
cde
'xxx'
(zzz)

我怎样才能做到这一点???。有任何想法吗。

4

5 回答 5

4

您可以对引号进行替换,例如:

select my_col 
from tbl_user 
order by ltrim(REPLACE(my_col,'"', '')) ASC

但这会增加很多开销......也许有一个更有效的内置解决方案。

于 2012-10-08T12:56:02.573 回答
2
select * from 
tlb_user
order by replace(my_col, '"', ');

SqlFiddle

于 2012-10-08T12:58:03.353 回答
1

Trim() 排序时去掉引号;

...
order by
   trim(both '"' from `your_column`) asc
于 2012-10-08T12:56:12.230 回答
1

试试这个:

select my_col 
from tbl_user 
order by
  SUBSTR(my_col, 2) ASC
于 2012-10-08T12:56:18.767 回答
0

您可以使用以下mysql_real_escape_string 链接忽略特殊字符:http: //in.php.net/mysql_real_escape_string

于 2012-10-08T13:01:09.553 回答