■SI Object Browser 掲示板
|
ユーザの皆様、開発者、サポート担当者の交流のための掲示板です! ユーザーの皆様同士で教え合ったりもできる交流の場にしたいと思っていますので、相互協力をよろしくお願いします。 なお、過去に同じようなQ&Aがあるケースも多いので、投稿前にキーワード検索してみてください。 |
|
| ※各投稿のカラーは対象となる製品に対応しています。【■…OB ■…OBER ■…全般 ■…その他】 ※ライセンスに関するお問合せにつきましては、お問い合わせページよりご連絡いただきますようお願いいたします。 ※誹謗中傷や公序良俗に反する書き込みはご遠慮ください。運営側の判断によりメッセージを削除する場合があります。 ※環境依存や技術的調査が必要な問題については掲示板上ではお答えしかねます。ご了承ください。 | |
Order句にCASE文を利用した場合のソート順について
2009/09/03 12:14
OB
3
ぽっけ
SI Object Browser for SQL Server(Ver 1.1.0) を利用しています。
DB接続環境は
SQL Server 2005 です。
SQL実行にて
select *
from テーブル名
order by
CASE WHEN 項目A = '' THEN 項目B
CASE WHEN 項目A IS NULL THEN 項目B
ELSE 項目A
END
を実行すると思い通りの結果が取得できません。
取得したい内容
項目A が 空 もしくは NULLの場合は 項目Bで、
項目Aに値があれば 項目A でソートしたいという内容です。
同じSQL文を
SQL Server Management Studioのクエリーで実行すると
思い通りの結果が取得できます。
違いが発生することについてご存知の方、
教えていただけますでしょうか。
DB接続環境は
SQL Server 2005 です。
SQL実行にて
select *
from テーブル名
order by
CASE WHEN 項目A = '' THEN 項目B
CASE WHEN 項目A IS NULL THEN 項目B
ELSE 項目A
END
を実行すると思い通りの結果が取得できません。
取得したい内容
項目A が 空 もしくは NULLの場合は 項目Bで、
項目Aに値があれば 項目A でソートしたいという内容です。
同じSQL文を
SQL Server Management Studioのクエリーで実行すると
思い通りの結果が取得できます。
違いが発生することについてご存知の方、
教えていただけますでしょうか。
返信を投稿
OB
後迫@SI
こんにちは
後迫@SIです。
お問い合わせいただきました件についてですが、
ご報告の現象について再現することができず、
原因の特定が困難な状態です。誠に申し訳ございません。
つきましては以下の追加情報をいただいてもよろしいでしょうか。
①以下のようなテーブル(単純な2列だけのテーブル)でも
同現象が再現いたしますでしょうか?
---------------------------------------------------------------------
CREATE TABLE [テーブル名]([項目A] VARCHAR(10), [項目B] VARCHAR(10))
go
INSERT INTO [テーブル名] VALUES('1','') --(1番)
go
INSERT INTO [テーブル名] VALUES('3','1') --(3番)
go
INSERT INTO [テーブル名] VALUES(NULL,'2') --(2番)
go
INSERT INTO [テーブル名] VALUES('','4') --(4番)
go
SELECT * FROM [テーブル名]
ORDER BY CASE WHEN [項目A] = '' THEN [項目B]
WHEN [項目A] IS NULL THEN [項目B]
ELSE [項目A] END
---------------------------------------------------------------------
②また、もし上記①にて現象が発生しない場合(特定のテーブルで発生する場合)は、
お手数ですが、現象の再現するテーブルのスクリプト(CREATE TABLE文)と、
該当のSELECT文をoob.support@sint.co.jp宛にいただいてもよろしいでしょうか?
※現象が発生するようでしたら、内容を加工していただいた形でも構いません。
お手数をおかけしてしまい申し訳ございませんが、
何卒よろしくお願いいたします。
後迫@SIです。
お問い合わせいただきました件についてですが、
ご報告の現象について再現することができず、
原因の特定が困難な状態です。誠に申し訳ございません。
つきましては以下の追加情報をいただいてもよろしいでしょうか。
①以下のようなテーブル(単純な2列だけのテーブル)でも
同現象が再現いたしますでしょうか?
---------------------------------------------------------------------
CREATE TABLE [テーブル名]([項目A] VARCHAR(10), [項目B] VARCHAR(10))
go
INSERT INTO [テーブル名] VALUES('1','') --(1番)
go
INSERT INTO [テーブル名] VALUES('3','1') --(3番)
go
INSERT INTO [テーブル名] VALUES(NULL,'2') --(2番)
go
INSERT INTO [テーブル名] VALUES('','4') --(4番)
go
SELECT * FROM [テーブル名]
ORDER BY CASE WHEN [項目A] = '' THEN [項目B]
WHEN [項目A] IS NULL THEN [項目B]
ELSE [項目A] END
---------------------------------------------------------------------
②また、もし上記①にて現象が発生しない場合(特定のテーブルで発生する場合)は、
お手数ですが、現象の再現するテーブルのスクリプト(CREATE TABLE文)と、
該当のSELECT文をoob.support@sint.co.jp宛にいただいてもよろしいでしょうか?
※現象が発生するようでしたら、内容を加工していただいた形でも構いません。
お手数をおかけしてしまい申し訳ございませんが、
何卒よろしくお願いいたします。
返信を投稿
OB
ぽっけ
迅速なご回答ありがとうございます。
>①以下のようなテーブル(単純な2列だけのテーブル)でも
> 同現象が再現いたしますでしょうか?
提示されたcreateとselect では確かに思い通りの
ソートとなりました。
>②また、もし上記①にて現象が発生しない場合(特定のテーブルで発生する場合)は、
> お手数ですが、現象の再現するテーブルのスクリプト(CREATE TABLE文)と、
> 該当のSELECT文をoob.support@sint.co.jp宛にいただいてもよろしいでしょうか?
> ※現象が発生するようでしたら、内容を加工していただいた形でも構いません。
申し訳ございませんが、特定のテーブルではまだ問題が解決しませんので
メールにて特定テーブルのCREATE文、SELECT文をお送りさせていただきます。
お忙しいところ大変申し訳ございませんがご確認の程 よろしくお願いいたします。
>①以下のようなテーブル(単純な2列だけのテーブル)でも
> 同現象が再現いたしますでしょうか?
提示されたcreateとselect では確かに思い通りの
ソートとなりました。
>②また、もし上記①にて現象が発生しない場合(特定のテーブルで発生する場合)は、
> お手数ですが、現象の再現するテーブルのスクリプト(CREATE TABLE文)と、
> 該当のSELECT文をoob.support@sint.co.jp宛にいただいてもよろしいでしょうか?
> ※現象が発生するようでしたら、内容を加工していただいた形でも構いません。
申し訳ございませんが、特定のテーブルではまだ問題が解決しませんので
メールにて特定テーブルのCREATE文、SELECT文をお送りさせていただきます。
お忙しいところ大変申し訳ございませんがご確認の程 よろしくお願いいたします。
返信を投稿
OB
後迫@SI
こんにちは
後迫@SIです。
追加情報をいただきありがとうございます。
現象について再現いたしました。
SI Object Browser SQLServer版の接続ドライバの不具合にて、
ORDER BY句にて、CASE文を使用し、条件分岐した値でソートする場合、
かつ、列名に大括弧がない場合は、正常ソートが実行されないようです。
(前回こちらで記載したSQLでは、大括弧を付与していたため、
正常にソートできておりましたが、大括弧を削除した場合は、
同様に、ソートがうまくいきませんでした。)
Object Browserの不具合です。誠に申し訳ございません。
この不具合につきましては、
次回バージョンアップにて修正を検討させていただきます。
現状ではお手数ですが、列名に大括弧をつけていただくことで、
正常にソート可能ですので、お手数ですが、
大括弧をつけていただくことでソートしていただくような対応を
お願いしてもよろしいでしょうか。
お手数をおかけしてしまい申し訳ございませんが、
何卒よろしくお願いいたします。
後迫@SIです。
追加情報をいただきありがとうございます。
現象について再現いたしました。
SI Object Browser SQLServer版の接続ドライバの不具合にて、
ORDER BY句にて、CASE文を使用し、条件分岐した値でソートする場合、
かつ、列名に大括弧がない場合は、正常ソートが実行されないようです。
(前回こちらで記載したSQLでは、大括弧を付与していたため、
正常にソートできておりましたが、大括弧を削除した場合は、
同様に、ソートがうまくいきませんでした。)
Object Browserの不具合です。誠に申し訳ございません。
この不具合につきましては、
次回バージョンアップにて修正を検討させていただきます。
現状ではお手数ですが、列名に大括弧をつけていただくことで、
正常にソート可能ですので、お手数ですが、
大括弧をつけていただくことでソートしていただくような対応を
お願いしてもよろしいでしょうか。
お手数をおかけしてしまい申し訳ございませんが、
何卒よろしくお願いいたします。
返信を投稿
OB