SQL Server 2008には、どの文字列が最初に来るのかを調べる文字列比較方法がありますか(ex 'abc'は 'abd'などの前にあります)?私は< =比較をする必要があります。SQL Server 2008での文字列の比較
答えて
<=
が問題ありません。あなたが抱えている問題は、文字列の数値ソートを期待していることです。それは特別な処理なしでは機能しません。
A1ソート
文字列 - この順でソートA10の文字列を:a1と "A1" とのA10スタート両方のため
a1
a10
a2
a3
a4
...
です。
文字列なので、数値は意味がありません。 0-9のa-zを代用するとどうなるか見てみましょう:
ab
aba
ac
ad
ae
なぜ結果が得られたのか分かりますか?辞書では、abaはacの前に来て、a10はa2の前に来ます。
問題を解決するには、列を2つに分割することをお勧めします.1つはchar、もう1つは数値です。不愉快な表現の中には正しい並べ替え順序が得られるかもしれませんが、絶対に選択肢がない限り、それはずっと悪い解決策です。
ここには1つの方法があります。それは合わないかもしれませんし、より効率的な方法かもしれませんが、私はあなたのすべてのデータがどのようなものか分かりません。
SELECT
FROM Table
WHERE
Col LIKE 'a%'
AND Substring(Col, Convert(int, PatIndex('%[^a-z]%', Col + '0'), 1000)) <= 10
アルファ部分が常に1文字であれば、より簡単に行うことができます。数字の後ろに文字を置くことができれば、より多くのつぶやきが必要です。
また、列を別々のアルファベットと数字の部分に分割し、外側のクエリに条件を設定する派生テーブルを試すこともできます。
照合は、各文字列と文字ベースの列は文字が一緒にソートされる(ほとんどの場合とアクセントのために)、これは不等式演算の結果を変えることができるかを決定照合設定を有して注意してください。
SELECT *
FROM Table
WHERE Value <= 'abc'
SELECT CASE WHEN Value <= 'abc' COLLATE Latin1_General_CS_AS_KS_WS THEN 1 ELSE 0 END
FROM Table
私が使用した照合では、大文字と小文字が区別され、アクセントに敏感です。
あなたはそのような使用可能なすべての照合を見ることができます:
SELECT *
FROM ::fn_helpcollations()
どのような状況でですか? <=
はSELECT文で動作します。
は、合意されました。さまざまな文字列照合の一覧は、http://msdn.microsoft.com/en-us/library/ms144250.aspxで提供されています – dsolimano
SELECT * FROM ( SELECT 'a1' AS col1 UNION SELECT 'a2' UNION SELECT 'a3 'UNION SELECT' a10 'UNION SELECT'テスト ' )WHERE col1 <=' a10 '; 'a1'と 'a10'のみが得られます。 – mwok
@mwok - アルファベット順に 'a2'と' a3'が 'a10'の後に来るからです。システムに数値を評価させたい場合は、文字列の構造が一貫していなければなりません。彼らはいつも一人のキャラクターで始まっていますか? – Thomas
- 1. SQL Serverの文字列の比較
- 2. SQL Serverの文字列比較!
- 3. SQL Server |文字列の比較
- 4. C#SQL Serverと文字列の比較
- 5. NVARCHARフィールドの比較SQL Server 2008 R2
- 6. SQL:文字列比較
- 7. SAS文字列の比較
- 8. PL SQLの文字列の比較
- 9. SQL Server 2008分割文字列レコード内
- 10. 入力文字列(PHP/SQL)とUTF-8文字列の比較
- 11. SQL Server 2008 R2日本語(NVARCHAR)文字列の比較でエラーが発生しましたか?
- 12. 文字列比較
- 13. 比較文字列
- 14. if文の文字列の比較
- 15. 文字列の比較 - Java
- 16. Pythonの文字列比較
- 17. PHPの文字列比較
- 18. 文字列/パスの比較
- 19. PHPの文字列比較
- 20. DateTime、文字列の比較
- 21. Python文字列の比較
- 22. Java:文字列の比較
- 23. Javaの文字列比較
- 24. C++文字列の比較
- 25. グローブ文字列の比較
- 26. MD5文字列の比較
- 27. 文字列の比較C#
- 28. Ajaxの文字列比較
- 29. 文字列のブール比較
- 30. DXF文字列の比較
@mwok:あなたのコメントに基づいて更新されました。 – ErikE
文字列から一意の番号を生成する何らかの「ハッシュ」関数があるので、文字列の代わりにその値を比較できますか? – mwok
@mwokは動作しません。私は自分の投稿を更新しました。 – ErikE