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

ソート時に引用符を削除します。

...
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 に答える