2016-03-30 6 views
0

サードパーティ製品に属するSQL Server 2008 R2データベースのビュー内のフィールドの長さを取得しようとしています。 [私は直接テーブルにアクセスすることはできませんし、私はビューの定義にアクセスする必要はありませんので、この列がどのように派生しているか、テーブルを照会するかわかりません。これ以下のクエリ -SQL Server 2008 R2 Len関数は、値(ビューから)に関係なく固定値を返します

Select Len(Col1) from MyView 

は、常にデータ長に関係なくすべての行で32を返します。

だから私はこれらを試してみました -

Select Len(Ltrim(Rtrim(Col1))) , Len(Convert(Varchar,Col1)) , Len(Convert(Varchar(16),Col1)) from MyView 

それはすべての行に対して32,30,16を返しています。誰もがこの行動を認識していますか?私は他の場所からコラムを派生させているかもしれないと思うが、この行動は私には意味がない[明らかなものが分からない限り]

+0

'SELECT SQL_VARIANT_PROPERTY(のCol1、 'BaseType')何、MyView' FROM SQL_VARIANT_PROPERTY(のCol1、 'のMaxLengthは')を返しますか? –

+0

こんにちは@Nick.McDermaid、それはVarchar、32を返すです。それが役に立てば幸い。 – Dinesh

+0

あなたの記述に基づいて、私はすべての32文字がフィールドで使用されていると仮定することができます。どのような 'datalength'値を取得していますか?私はこれがデータを分析するより良いクエリであることを示唆しています: 'Select Col1'、['+ Col1 +'] '、LEN(Col1)、LEN(RTrim(LTrim(Col1)))、DATALENGTH(Col1)FROM MyView' –

答えて

0

Aha!問題が見つかりました。この列はVarbinaryデータ型から変換されているようです。だから、this questionはこの問題を解決するために私を助けた -

Select Len(Replace(Col1,char(0),'')) from MyView 

は、私が欲しい結果を与えます。

関連する問題