68

最近 SQL2012 にアップグレードし、Management Studio を使用しています。データベース内の私の列の 1 つに がCHAR(13) + CHAR(10)格納されています。

SQL Server 2008 を使用していたときは、これをコピーして Excel に完全に貼り付けることができました。ただし、同じデータをコピーして貼り付けると、Excel にあるデータに新しい行/キャリッジ リターンが作成されます。

この問題を解決する SQL2012 で見逃した設定はありますか? 個々の列REPLACE(CHAR(13) + CHAR(10))を使用してから定義する必要があるため、データベースの選択ごとに単純にしたくはありません。SELECT *

4

19 に答える 19

55

私の最善の推測では、これはバグではなく、Sql 2012 の機能です。;-) 他のコンテキストでは、テキストの大きなチャンクをコピーする場合など、cr-lf を保持しておいてよかったと思います。それはあなたの状況ではうまくいかないということです。

あなたの選択でそれらをいつでも取り除くことができます。これにより、両方のバージョンで意図したとおりにクエリが作成されます。

select REPLACE(col, CHAR(13) + CHAR(10), ', ') from table
于 2012-11-21T20:09:22.463 に答える
29

この問題の回避策を見つけました。手でコピーして貼り付ける代わりに、Excel を使用してデータベースに接続し、完全なテーブルをインポートします。次に、興味のないデータを削除します。

手順は次のとおりです(Excel 2010の場合)

  1. メニューへData > Get external data: From other sources > From SQL Server
  2. SQL サーバー名 (サーバーに Windows 認証がない場合は資格情報) を入力して接続します。
  3. 改行のあるデータを含むデータベースとテーブルを選択し、[完了] をクリックします。
  4. コピー先のワークシートを選択し、[OK] をクリックします。

Excel は、改行をそのままにして完全なテーブルをインポートします。

于 2014-06-06T08:50:03.743 に答える
14

Excelにコピーするために結果にキャリッジリターン/改行を含める(コピー/ヘッダー付きでコピー/結果を名前を付けて保存)ための最良の方法は、に二重引用符を追加することSELECTです。

 SELECT '"' + ColumnName + '"' AS ColumnName FROM TableName;

列データ自体に二重引用符を含めることができる場合は、「二重引用符」でエスケープできます。

 SELECT '"' + REPLACE(ColumnName, '"', '""') + '"' AS ColumnName FROM TableName;

空の列データは、SQL Management Studio では 2 つの二重引用符として表示されますが、Excel にコピーすると空のセルになります。NULL値は保持されますが、CONCAT('"', ColumnName, '"')またはを使用して変更できますCOALESCE(ColumnName, '')

@JohnLBevan がコメントしたように、組み込み関数を使用して列データをエスケープすることもできますQUOTENAME

 SELECT QUOTENAME(ColumnName, '"') AS ColumnName FROM TableName;
于 2015-03-10T14:24:02.687 に答える
3

これは、最近 "テキストから列へ" を使用したときに Excel で発生することがあります。

Excel を終了し、再度開いて、もう一度貼り付けてみてください。通常はこれでうまくいきますが、コンピューターを完全に再起動する必要がある場合があると聞きました。

于 2013-06-14T18:02:28.460 に答える
3

これはまだここで言及されていないので、それが私が問題を回避した方法です...

ターゲットデータベースを右クリックして選択Tasks > Export dataし、それに従ってください。「Choose a destination」画面の宛先の 1 つは Microsoft Excel で、クエリを受け入れるステップがあります。

これは、SQL Server のインポートおよびエクスポート ウィザードです。これは、私が通常使用するヘッダー付きの単純なコピー オプションよりもはるかに長い時間がかかりますが、Excel に取得するデータが大量にある場合は、より多くのフープをジャンプすることを除けば、価値のあるオプションです。

于 2015-07-28T11:09:07.857 に答える
1

結果を SQL Server Management Studio 2012 から Excel にコピー アンド ペーストしたり、リスト セパレータを使用して Csv にエクスポートしたりできるようにするには、最初にクエリ オプションを変更する必要があります。

  1. [クエリ]、[オプション] の順にクリックします。

  2. [結果] の下で、グリッドをクリックします。

  3. 次の横にあるチェックボックスをオンにします。

    .csv の結果を保存するときに、リスト セパレータを含む文字列を引用します。

これで問題は解決するはずです。

于 2014-09-10T17:04:34.263 に答える
0

バンドエイドを付けるのではなく、実際にどの行/データにキャリッジリターンがあるかを調べて、ソースデータを修正することができます。

UPDATEテーブルSetField= Replace(Replace(Field、CHAR(10)、'')、CHAR(13)、'')WHERE Field like'%' + CHAR(10)+'%' or Field like'%' + CHAR(13)+'%'

于 2012-11-21T20:12:04.723 に答える
0

私は同じ問題に遭遇しました。次のソリューションを使用して、結果を CSV に変換できました。

  1. クエリを実行
  2. 結果グリッドの左上隅を右クリックします
  3. 「結果を名前を付けて保存..」を選択します。
  4. csvとビオラをチョイス!
于 2014-10-17T19:35:37.100 に答える
0

Studio がバージョンを変更したため、すべてのクエリを変更することはできません。上記の設定を試しても効果がありませんでした。CR-LF があったときに引用符を入れませんでした。おそらく、コンマが発生したときにのみトリガーされます。

Excel へのコピー アンド ペーストは、SQL サーバーの主力です。Mircosoft は、チェックボックスを使用して 2008 の動作に戻すか、1 行が 1 行に等しいように Excel へのクリップボード転送を強化する必要があります。

于 2015-02-10T20:03:58.817 に答える
0

クエリ結果を Excel として保存し、ファイル拡張子を .txt に変更してみてください。Excel を使用して開き (... で開く)、テキストを列に使用します (テキストとして書式設定)。これがこの状況で機能するかどうかはわかりませんが、自動ストリップオフに優れている他のフォーマットの問題にはうまく機能します.

于 2012-11-20T17:44:03.123 に答える