数字とvarchar
の両方の値( '2008'、 'n/a')の両方を含む列の最大値をとっています。最大値とは何ですか?文字列または数値ですか?Microsoft SQL Server最大文字数と同じ列の数値
私はMicrosoft SQL Serverで作業しています。
ありがとうございます!
数字とvarchar
の両方の値( '2008'、 'n/a')の両方を含む列の最大値をとっています。最大値とは何ですか?文字列または数値ですか?Microsoft SQL Server最大文字数と同じ列の数値
私はMicrosoft SQL Serverで作業しています。
ありがとうございます!
文字列の場合、MAXは照合順序で最高の値を見つけます。 -
max()
docs
あなたはここでorder by col desc
は、いくつかの列に投げ込まれた値とソート降順であるかのように、それは同じ値になります。
+------------+
| col |
+------------+
| Z |
| na |
| n/a/ |
| 9999999999 |
| 30 |
| 2008 |
| 00000000 |
+------------+
max()
は次のようになり上記の最初の値。 Z
。
rextesterデモ:http://rextester.com/IXXX76837
正確な順序は、あなたのコラムのあなたの照合(Latin1_General_CI_ASに最もデフォルト)に依存します。ここで
(バイナリラテン/一般ラテン)あなたにいくつかの別の照合のための各文字のソート順を示したデモです
rextesterデモ:http://rextester.com/WLJ38844
数値は実際には文字列です。
MAXは、ASCII文字のシーケンスを照合する照合順序
での最高値は、下のリンクを参照してください見つかりました。
ありがとうございます!非常に有用なリソース。 – Melissa
create table one
(
Col1 varchar(200)
)
insert into one(Col1)
values('2008'),('n/a'),('aaaa'),('bbb'),('zzzz')
select max(Col1) from one
--zzzz
これはどのように彼らの質問に答えますか? – Siyual
ちょうど例を挙げました。最大とするときに数字と文字列が混在しているときに意味がありません –
N /知られている「N /」値を排除し、最大または最小の機能を付与しながら、意味のあるいくつかのことにそれらをキャストする方がよい
最大になります。select max(cast(column as int))
from tablename
where column != 'n/a'
' '2008''が文字列ではなく、番号です。列は 'varchar'と' numeric'の両方のデータ型にすることはできません。それは文字列の比較を使用しています。あなたの例では、「n/a」は2つのうちの最大値です。 – Siyual
あなたは正しいです。それらの2つの値のうちのどれが最大値として取られるか? – Melissa
''n/a''は2つのうちの最大値になります。 – Siyual