Q質問

sqlserver2005

文字列のカラム(ただし数字のみ)と、画面から文字列としてきた
数字の大小を比較したいと思っています。

たとえば、WHERE ~ 【対象カラム】 > CONVERT(NUMERIC,'1')のように
しようと思っていたのですが、この場合、【対象カラム】の中に
空白があるとこけてしまいます。
文字列なので、空がNULLとは限らないため困っています。
そもそもINT型のカラムならば良いのですが、都合により文字列の
カラムにするしかなく。

妙案ありましたらアドバイスいただけないでしょうか。

A 回答 (2件)

ちょっとまわりくどいですが
CASE NUMERIC = '' WHEN THEN 0 ELSE CONVERT(NUMERIC,'1') END
と空白NULLチェックすればコケはしないです。
ただし、文字の比較なら思った結果は得られません。
No1の方の指摘どおりになるでしょう

それよりはゼロフィルした値と比較したほうが楽ではないでしょうか?

SUBSTRING('0000000000' + 【対象カラム】 , LEN(【対象カラム】) , 10) > SUBSTRING('0000000000' + NUMERIC , LEN(NUMERIC) , 10);

パフォーマンス無視なので、レコード数が少ないならこれでも大丈夫ですが、

    • good
    • 0

解決策ではないんですが。
> 空がNULLとは限らないため困っています。
isnull([列名], ' ')
を利用するとか。

> 都合により文字列のカラムにするしかなく。
文字列で比較は、順序がおかしくなりませんか?

1~20を数字の文字列にすると
'1'
'11'
'12'
'13'
'14'
'15'
'16'
'17'
'18'
'19'
'2'
'20'
'3'
'4'
'5'
'6'
'7'
'8'
'9'
じゃないですか?

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

注目の記事

【長谷川豊】手越君の対応はお手本です

今週発売の文春さんに、驚きのニュースが載っていました。 先だって、熱愛写真がスクープされたNEWSの手越君とAKBの柏木由紀さん。ファンの悲鳴がこだまする中、柏木さんはダンマリを決め込み、ファンからの厳しい声...

このQ&Aを見た人が検索しているワード


このカテゴリの人気Q&Aランキング

おすすめ情報