2017-01-26 13 views
0

文字の長さが>= 6の場合、結果を返そうとしています。ただし、クエリ(下記)は、テキスト長が6未満の結果を返します。 b.column3ためSQLリス - フィールドの長さに基づいて結果を返す

select a.column1, b.column2, b.column3, b.column4, b.column5 
from test.table a 
    inner join test.table b 
      on a.row= b.row 
where char_length(b.column3) >= 6 

結果は次のとおりです。

Four 
Four 
Four 
Five 
Five 
SixSix 
SixSix 
SixSix 

私が望むすべては、文字長より大きいか6に等しいとの結果であるとき。

ありがとうございます!

+0

バックエンドデータベースとは何ですか?選択リストにchar_length(b.column3)を追加するとどうなりますか? b.column3のデータ型は何ですか? –

+1

あなたはどのデータベースを使用していますか? – Zeus

+0

@ AlexK. char_length(b.column3)を選択リストに追加すると、char_lengthが6のテキストフィールドの横に4文字しか表示されません。これはあなたが探している答えではないが、データが複数の場所.. AS400とSQLサーバーに格納されている場合、私を許してください。 – scareware

答えて

1

私はあなたのb.column3charの列であると確信しています。その場合、その列のすべての値は空白で埋められ、すべての値は列の長さと同じ長さになります。あなたが彼らの本当な長さをチェックするために値をtrimする必要があります。その場合はtrim機能を使用すると、すなわち、SQL Serverのdoesntのを使用しているDBMSいるに依存すること

select a.column1, b.column2, trim(b.column3) column3, b.column4, b.column5 
from test.table a 
inner join test.table b 
on a.row= b.row 
where char_length(trim(b.column3)) >= 6 

注意」それを持って、あなたの代わりにRTRIMを使用する必要があります。

関連する問題