【问题标题】:Mysql column sorting of string data with characters like `() ' "`Mysql对字符串数据的列排序,带有`()'"`之类的字符
【发布时间】:2012-10-09 09:18:53
【问题描述】:

我有一个表,它包含 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)

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

【问题讨论】:

    标签: mysql sql sorting


    【解决方案1】:

    尝试多个REPLACE

    ORDER BY REPLACE(REPLACE(REPLACE(REPLACE(my_col,'"', ''), '(',''), ')', ''), '''','') ASC
    

    SQLFiddle Demo

    【讨论】:

    • 是的,它工作正常。谢谢。我在网上没有找到关于替换功能的信息,你能给我它的链接吗?
    • @YogeshSuthar here's the link
    【解决方案2】:

    试试这个:

    SELECT id
    FROM   tblNum
    ORDER  BY REPLACE(id, SUBSTRING(id, PATINDEX('%[^a-zA-Z]%', id), 1), '')
    

    【讨论】:

    • PATINDEX 是特定于 SQL Server 的。
    • 是的,我没有检查 mysql 标签是我的错误
    猜你喜欢
    • 2012-08-19
    • 2021-12-01
    • 2011-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-23
    相关资源
    最近更新 更多