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で質問しましょう!

注目の記事

子どものいる女性が朝帰りしてしまう心理

子どもが生まれると夫婦共に忙しくなりがちだ。特に、母親である妻の負担は大きくなり、時には夜泣きや授乳で眠れない日が続くことも……。だからこそ、たまには思う存分1人の時間を楽しんでもらいたいものだが、飲み...

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


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

おすすめ情報

カテゴリ