2

テーブルがあり、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

2 に答える 2

4

複数試してくださいREPLACE

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

SQLFiddleデモ

于 2012-10-09T09:22:15.620 に答える
1

これを試して:

SELECT id
FROM   tblNum
ORDER  BY REPLACE(id, SUBSTRING(id, PATINDEX('%[^a-zA-Z]%', id), 1), '')
于 2012-10-09T09:28:57.927 に答える