質問

sqlserver2005

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

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

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

通報する

回答 (2件)

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

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

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

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

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

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

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

このQ&Aは役に立ちましたか?0 件

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

新しく質問する

注目の記事

フリーアナウンサー長谷川豊氏の新コーナー「このニュースどう思います?」がスタート!

元フジテレビのフリーアナウンサー長谷川豊氏から気になるニュースについておしトピの皆さんに質問します! 皆さんの意見をもとに長谷川豊氏がコラムを執筆します! アプリリリース記念として最大1万分のアマゾンギフト券プレゼントキャンペーンも実施中!


新しく質問する

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

毎日見よう!教えて!gooトゥディ