名前で列をソートして、いくつかの項目である引用符を無視しますか?名前で並べ替えますが、引用符は無視しますか?
例えば:
"これはクールだ"
別の記事
条2
こんにちは
なりソートなど:
引用符がデータベースにすでにある別の記事
条2
こんにちは
"これはクールだ"
...
ORDER BY
で
名前で列をソートして、いくつかの項目である引用符を無視しますか?名前で並べ替えますが、引用符は無視しますか?
例えば:
"これはクールだ"
別の記事
条2
こんにちは
なりソートなど:
引用符がデータベースにすでにある別の記事
条2
こんにちは
"これはクールだ"
...
ORDER BY
で
SELECT * FROM yourTable ORDER BY TRIM(BOTH '"' FROM title);
SELECT *
FROM table
ORDER BY CASE WHEN len(col) >= 2
THEN REPLACE(LEFT(COL, 1), '"', '')
+ RIGHT(LEFT(col, LEN(col)-1), LEN(LEFT(col, LEN(col)-1))-1)
+ REPLACE(RIGHT(col, 1), '"', '')
ELSE col
END
、I二重引用符を削除するには、 '内'の最初の&最後の文字を ''で置き換えます。もちろん、長さ> = 2の場合にのみ有効です。
使用している言語によって異なります。 MS SQLでは、REPLACEコマンドを使用します。
SELECT *
FROM dbo.Users
ORDER BY REPLACE(firstName, '"', '')
REPLACEは名前からすべての引用符を削除します。 –
あなたはそうです。しかし、データ自体からではなく、ソート時にのみ削除されます。 kylexは引用符なしですべてを並べ替えたいと思うようです。これは次のようなものを並べ替えます: アルティクル3 悪い例ですが、今のところ私は考えることができますどちらの方法でも、返されるデータには影響しないため、問題はないと思います。 – JohnathanKong
しかし、何らかの方法でソート順に影響しませんか? –
SELECT name
FROM myTable
ORDER BY replace(name, '"', '')
トリックこと:私はテーブルを持っているのであれば、私はによってソートしています列の最初の名前を持つユーザーが、私はこれを行う文字列のうち、すべての二重引用符を取り除きいますTRIM()またはREPLACE()をベースにした解決策は、最初の文字が引用符(または拡張子は英数字以外の文字)のみにフォーカスすることです。
ORDER BY CASE LEFT(myCol, 1)
WHEN '"' THEN REPLACE(myCol, '"', '')
ELSE myCol
END CASE
は一般に、大きなデータセットに対して、このような処理は、表示目的のための列とは対照的に、目的を照会するための列を添加して、例えば、負荷時に行わなければなりません。
美しく働いた! – kylex
これは大きなデータセットでは遅くなります! – jor
さらに複雑な要件の場合、別のオプションとして、事前処理されたバージョンの値を保持するソート用の専用列を含むように、事前にテーブルを計画することもできます。たとえば、 'name =" Dr。Strange Love "と' name_sort = "Love、Strage、Dr." – Afilu