2017-04-21 2 views
0

以下のSELECTステートメントを使用して私のために働いている私のキャストの試みです:どちらもキャストも変換は

cast((select count(distinct tm.MEMBER_ID) from #tempmemid as tm) as int(64)) 

それが機能しなかった後、私が変換しよう:

convert(int, (select count(distinct tm.MEMBER_ID) from #tempmemid as tm) 

が不正な構文です?誰かが私が得たGoogleの結果よりもキャストと変換の違いを説明できますか?

キャストを::次のように

私はそれぞれの受信てるのエラーメッセージ

&

変換「などの」キーワードの近くに不正な構文「変換」キーワードの近くに不正な構文

+0

ないのはなぜあなたが最初の場所でキャストまたは変換しようとしていることを確認? countはintを返します。なぜキャスト/変換するのですか? bigintが必要な場合は、@ GordonLinoffの答えは意味があります。 –

答えて

2

削除場合は、最初は動作します「(64)」:

SELECT cast((select count(distinct tm.MEMBER_ID) from #tempmemid as tm) as int) 

が、ショーンは、以下の指摘するように、INTとしてCOUNTをキャストする必要はありません。

目は間違ったブラケットを持っています

SELECT convert(int, (select count(distinct tm.MEMBER_ID) from #tempmemid as tm)) 
+1

これは意味をなさない。 COUNTはintを返し、intをintとしてキャストします。 –

2

count()の戻り値は整数にする必要はありません。cast()それは既に価値があるものです。

bigintとします。

(select count_big(distinct tm.MEMBER_ID) from #tempmemid as tm) 

これはbigintを返します。count_big()を使用し、cast()を使用しないでください。

関連する問題