SQLクエリがあり、内部結合を介してテーブル1をテーブル2にリンクし、ステートメントのselect部分にこの部分が含まれています。
select
table1.field1,
table2.field1,
CASE (table2.field1)
WHEN -2 THEN ''
ELSE table2.field2
END as table2Field2,
table3.field4
from...
関連する値がある場合、つまりtable2で表されるオブジェクトがnullでない場合、つまりtable2.field1の値が-2にならない場合に、table2Field2を返すことができるようにしたい。この場合、table2Field2の値は、意味のない値ではなく、空白にする必要があります。
ただし、これは空白テキストの代わりに0を返します。この行を変更した場合:
WHEN -2 THEN ''
これに:
WHEN -2 THEN 'someText'
次に、intを文字列に変換しようとしていると文句を言いますが、私はそうではありません。table2field1はintですが、table2Field2は文字列であり、実際にここで返します。
このクエリで、文字列フィールドを文字列として返し、(a)文字列ではなく、(b)指定したもの以外の文字列として返していないことを(さらに具体的に)述べるにはどうすればよいですか?戻ってきますか?
すべての提案を歓迎します、助けてくれてありがとう:)
でCASE
表現、可能な戻り値はすべて同じデータ型でなければなりません。記述されているように、式は1つの文字列と1つの整数を返そうとしています。
最初の出力に空の文字列がCAST
必要な場合はCONVERT
、2番目の出力を文字タイプの値にすることができます。
select
table1.field1,
table2.field1,
CASE (table2.field1)
WHEN -2 THEN ''
ELSE CAST(table2.field2 AS varchar(12)) --< 12 will cover any value of integer.
END as table2Field2,
table3.field4
from...
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加