- PR -

SQLのdistinct文について・・・

投稿者投稿内容
zilloll
常連さん
会議室デビュー日: 2006/02/01
投稿数: 24
投稿日時: 2006-05-12 14:02
もしかしてAccessでは?
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-05-12 14:31
引用:

zillollさんの書き込み (2006-05-12 14:02) より:

もしかしてAccessでは?


Jet ですから、Access というか MDB というのはあり得ますね。(^^)
とりあえず、型を変更して実行してみるなどして切り分けしてください。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
ぼのぼの
ぬし
会議室デビュー日: 2004/09/16
投稿数: 544
投稿日時: 2006-05-12 15:06
乗り遅れたw
私も、「Jet」「メモ型」というキーワードからAccessかなーと思いました。
で、憶測ですがAccessのメモ型だったとして
引用:

一郎さんの書き込み (2006-05-12 13:22) より:
ちなみに、SQLServerでは、text型というなが〜いテキストを格納する型は値の比較ができません。
DISTINCTするのには値を比較しなければならないでしょうから、当然DISTINCTも使えません。
何か関係がありますかねー?


原因はこれなんじゃないでしょうか?両方Microsoft製品だし、Accessのメモ型とSQL Serverのテキスト型って同じようなもののような気がします。
なせ
常連さん
会議室デビュー日: 2006/01/06
投稿数: 41
お住まい・勤務地: おおさか
投稿日時: 2006-05-12 15:15
distinctができない場合には
a8(メモ型)の文字が削られる
という仕様にAccessはなっている。。。と?

#SQLリファレンスには載ってないことって多いんだな。。。orz
#SQLserverでもDistinctができるって書いてるのに(つд`)
いーいちゃん
会議室デビュー日: 2006/01/15
投稿数: 11
投稿日時: 2006-05-12 15:47
おせわになっています。

まず、なせさんのレスで

spreadセルの入力可能バイト数も最大の999バイトにしてあり
データーはそれ以下になっています。

型をテキスト型に変更するとデーターがフィールドサイズ
255を超えておりこの時点で無理なのではないでしょうか?

なにかAccessのほうで設定があるのでしょうか?
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2006-05-12 15:55
NAL-6295です。

http://support.microsoft.com/default.aspx?scid=kb%3Bja%3B896950
リンク先の内容
引用:

DISTINCT キーワードは、 Access にレコードの比較を行うのを指示します。 Access が 2 つのメモ型フィールドの比較を行うとき、 Access が 255 - 文字制限を含むテキスト型フィールドとしてフィールドを扱います。 255文字を超えるメモ型フィールド データと、ときどき「現象」に記載されたエラー メッセージが表示されます。 255文字ときどきのみメモ型フィールドから返されます。



が該当しそうですね。
たつ64
会議室デビュー日: 2005/08/02
投稿数: 16
お住まい・勤務地: 天下の台所?
投稿日時: 2006-05-12 16:01
Accessと仮定して…。

ヘルプからの引用です。
引用:

データ型とフィールド サイズについて (MDB)
…中略…
テキスト型またはメモ型のフィールドでは、値を並べ替えたりグループ化したりできます。ただし、メモ型フィールドについては、最初の 255 文字だけを使用して、並べ替えまたはグループ化が行われます。


切られちゃうのはしょうがない?

カブッタ…。


[ メッセージ編集済み 編集者: たつ64 編集日時 2006-05-12 16:10 ]
なせ
常連さん
会議室デビュー日: 2006/01/06
投稿数: 41
お住まい・勤務地: おおさか
投稿日時: 2006-05-12 17:02
引用:

いーいちゃんさんの書き込み (2006-05-12 15:47) より:

spreadセルの入力可能バイト数も最大の999バイトにしてあり
データーはそれ以下になっています。



NAL-6295、たつ64の書かれている
テキストの制限を回避する方法が思いつかん。。orz

a8が最大1000として考えるなら
substr(a8,1,255) as a8_1,
substr(a8,256,255) as a8_2,
substr(a8,512,255) as a8_3,
substr(a8,768,255) as a8_4,
とSQLでa8を分けて、スプレッドに貼り付ける前に
結合させてa8として振舞わせる。
みたいなとっても醜い方法ぐらい

スキルアップ/キャリアアップ(JOB@IT)