トップ回答者
dtsパッケージに関すること

質問
回答
-
> SELECT コード FROM table WHERE (name=' ')
> という具合に’’の間に空白を50個設定します。
SQL Serverでは文字列の後ろの空白は無視して抽出されるはずです。
(「はず」と書いたのは、それについて書かれた公式の文書が見つからないためです)
そのため、「SELECT コード FROM table WHERE (name='')」と記述しても、結果は同じになります。
試しに以下のテーブルを作成して、
CREATE TABLE [table]
(
コード int,
name varchar(50)
)
次の行を追加しました。(コードに設定した値が空白の数です)
INSERT INTO [table] VALUES (0, '')
INSERT INTO [table] VALUES (1, ' ')
INSERT INTO [table] VALUES (5, ' ')
INSERT INTO [table] VALUES (50, ' ')
次に、SELECTクエリーを発行して、結果を比べてみました。
SELECT コード FROM [table] WHERE (name=' ')
SELECT コード FROM [table] WHERE (name='')
その結果、両方とも同じ結果となりましたので、項目が空白かどうかを調べるだけであれば、
空白を50個設定する意味はありません。逆に、空白が50個設定されている行だけを抽出するというのであれば、
別の抽出条件を指定する必要があります。
> 症状としましては
> クエリを作成してOKを押すと変なところで勝手に改行が入っていきます。
こちらに関しては、DTSパッケージのクエリデザイナでクエリを作成した場合に現象が発生するようなので、
クエリデザイナを使わないで直接入力するか、生成されたクエリから改行を削除すれば解決すると思われます。
-
こんにちは、naginoです。
CatTailさんの投稿を見て、状況を理解しました。
「データ変換サービス クエリ デザイナ」を使用されているということですね。
CatTailさんが記載しているととおり、「データ変換サービス クエリ デザイナ」を使わずに「SQL 実行タスクのプロパティ」で
直接クエリを入力することで、回避できます。
なお、蛇足ながら、文字列の末尾の空白の扱いについては、比較演算子の仕様になります。
SQL Server 2005であれば以下に記載があります。
http://msdn.microsoft.com/ja-jp/library/ms191529.aspx
SQL Server 2000とSQL Server 7.0については、以下に記載があります。
すべての返信
-
> SELECT コード FROM table WHERE (name=' ')
> という具合に’’の間に空白を50個設定します。
SQL Serverでは文字列の後ろの空白は無視して抽出されるはずです。
(「はず」と書いたのは、それについて書かれた公式の文書が見つからないためです)
そのため、「SELECT コード FROM table WHERE (name='')」と記述しても、結果は同じになります。
試しに以下のテーブルを作成して、
CREATE TABLE [table]
(
コード int,
name varchar(50)
)
次の行を追加しました。(コードに設定した値が空白の数です)
INSERT INTO [table] VALUES (0, '')
INSERT INTO [table] VALUES (1, ' ')
INSERT INTO [table] VALUES (5, ' ')
INSERT INTO [table] VALUES (50, ' ')
次に、SELECTクエリーを発行して、結果を比べてみました。
SELECT コード FROM [table] WHERE (name=' ')
SELECT コード FROM [table] WHERE (name='')
その結果、両方とも同じ結果となりましたので、項目が空白かどうかを調べるだけであれば、
空白を50個設定する意味はありません。逆に、空白が50個設定されている行だけを抽出するというのであれば、
別の抽出条件を指定する必要があります。
> 症状としましては
> クエリを作成してOKを押すと変なところで勝手に改行が入っていきます。
こちらに関しては、DTSパッケージのクエリデザイナでクエリを作成した場合に現象が発生するようなので、
クエリデザイナを使わないで直接入力するか、生成されたクエリから改行を削除すれば解決すると思われます。
-
こんにちは、naginoです。
CatTailさんの投稿を見て、状況を理解しました。
「データ変換サービス クエリ デザイナ」を使用されているということですね。
CatTailさんが記載しているととおり、「データ変換サービス クエリ デザイナ」を使わずに「SQL 実行タスクのプロパティ」で
直接クエリを入力することで、回避できます。
なお、蛇足ながら、文字列の末尾の空白の扱いについては、比較演算子の仕様になります。
SQL Server 2005であれば以下に記載があります。
http://msdn.microsoft.com/ja-jp/library/ms191529.aspx
SQL Server 2000とSQL Server 7.0については、以下に記載があります。