問題タブ [varcharmax]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
287 参照

sql - RTRIM が期待どおりに機能しない

何千回も使用してきた RTRIM が期待どおりに機能しないという奇妙な問題に直面しています。最後にスペースのように見える文字があるようですが、SQL 2008 はそれらをスペースとして扱わないため、最後の「スペース」は削除されません。「スペース」の数は行ごとに異なります。これまでに考えたことや遭遇したことのある人はいますか?

下のカーソルは、コンテンツを varchar(max) としてキャストしながらレコードを選択します。次に、末尾の文字を削除して varbinary(max) としてキャストバックしながら、コンテンツ キーに基づいてレコードを更新することになっています。ここに私のカーソルがあります:

アップデート:

digitalassetcontent.conent の例:0x457874656368203430304120414320636C616D70206D657465722C2041432063757272656E74206D6F64656C20746F206D65657420796F7572206170706C69636174696F6E206E656564732E20203230303020636F756E74204C434420646973706C61792E20204869676820616363757261637920666F722063757272656E74206D6561737572656D656E74732E2020302E3922202832336D6D29206A61772073697A65206163636F6D6D6F646174657320636F6E647563746F727320757020746F203330304D434D2E2020436F6E74696E756974792062656570657220616E642064696F646520746573742E20204461746120686F6C6420616E64206D617820686F6C642E20204F7665726C6F61642070726F74656374696F6E20666F7220616C6C2072616E6765732E20204F76657272616E676520616E64206C6F77206261747465727920696E64696361746F72732E20204175746F72616E67696E672077697468206175746F20706F776572206F66662E0D0A090909090909090909090D0A090909090909090909090D0A090909090909090909090D0A090909090909090909090x457874656368203430304120414320636C616D70206D657465722C2041432063757272656E74206D6F64656C20746F206D65657420796F7572206170706C69636174696F6E206E656564732E20203230303020636F756E74204C434420646973706C61792E20204869676820616363757261637920666F722063757272656E74206D6561737572656D656E74732E2020302E3922202832336D6D29206A61772073697A65206163636F6D6D6F646174657320636F6E647563746F727320757020746F203330304D434D2E2020436F6E74696E756974792062656570657220616E642064696F646520746573742E20204461746120686F6C6420616E64206D617820686F6C642E20204F7665726C6F61642070726F74656374696F6E20666F7220616C6C2072616E6765732E20204F76657272616E676520616E64206C6F77206261747465727920696E64696361746F72732E20204175746F72616E67696E672077697468206175746F20706F776572206F66662E0D0A090909090909090909090D0A090909090909090909090D0A090909090909090909090D0A090909090909090909090x457874656368203430304120414320636C616D70206D657465722C2041432063757272656E74206D6F64656C20746F206D65657420796F7572206170706C69636174696F6E206E656564732E20203230303020636F756E74204C434420646973706C61792E20204869676820616363757261637920666F722063757272656E74206D6561737572656D656E74732E2020302E3922202832336D6D29206A61772073697A65206163636F6D6D6F646174657320636F6E647563746F727320757020746F203330304D434D2E2020436F6E74696E756974792062656570657220616E642064696F646520746573742E20204461746120686F6C6420616E64206D617820686F6C642E20204F7665726C6F61642070726F74656374696F6E20666F7220616C6C2072616E6765732E20204F76657272616E676520616E64206C6F77206261747465727920696E64696361746F72732E20204175746F72616E67696E672077697468206175746F20706F776572206F66662E0D0A090909090909090909090D0A090909090909090909090D0A090909090909090909090D0A09090909090909090909

0 投票する
0 に答える
2037 参照

sql - varchar(max) を含む SQL クエリが ORDER BY で非常に遅い

20 列 (int、bool、および varchar(50)) を持つテーブルの取得は、varchar(max) 型の列が 1 つあるため、非常に遅くなります。

テーブルには 680 行あり、最大 5 または 6 個の結果を取得しています。

結果に varchar(MAX) 型の列が含まれている場合、何らかの理由で select ステートメントが非常に遅くなります。

ご参考までに; スクリプトファイルを使用して、あるサーバーから別のサーバーにテーブルの内容 (スキーマとデータ) を移動しました。

これがどのように可能になるか考えていますか?

// さらに情報を挿入します。わかりました、プロットは厚くなります。

インデックスを作成しましたが、(顕著な) パフォーマンスの向上はありません。

現在、より多くのデータベース(同じサーバー)で取得しています。プロファイラーから次のクエリを取得します (エンティティ フレームワークからのクエリ)。

これにより、ロード時間が長くなることがあります。レコードの量に関係なく、ロード時間は常に約 16 ~ 18 秒増加します。

完全なSQLサーバーは(他のデータベースへの)リクエストを処理していないため、すべてのサイトがブロックされ、この操作が完了するまで待機してから続行します。

リクエストごとにメモリがいっぱいになっているようです!

サーバーの仕様は十分に公平です。webserver 8gigs ram、sql も同じです。現在、IIS7 で約 20 のサイトをホストしています (すべて .net MVC は EF 5 を使用)

0 投票する
2 に答える
1353 参照

tsql - varchar(max): 「行内」データの長さを制御する方法

私は次のようなものを読み続けています:

行内テキスト オプションは、SQL Server の将来のバージョンで削除される予定です。新しい開発作業でこのオプションを使用することは避け、現在行内のテキストを使用しているアプリケーションを変更することを計画してください。varchar(max)、nvarchar(max)、または varbinary(max) データ型を使用して大きなデータを格納することをお勧めします。これらのデータ型の行内および行外の動作を制御するには、大きな値の型の行外オプションを使用します。

では、行を 16 文字に制限したい varchar(max) フィールドがある場合はどうすればよいでしょうか?

ありがとう!

編集。 「行内」とは、VARCHAR/TEXT 文字列がポインターとしてではなく、データ行に直接格納されることを意味します (文字列データは別の場所に格納されます)。行からデータを移動すると、テーブル スキャンのパフォーマンスが向上します。行から移動されたデータは、「where」句の一部ではありません。

編集。 私が引用したテキストは、次のように述べています。

これらのデータ型の行内および行外の動作を制御するには、大きな値の型の行外オプションを使用します。

案の定:

https://msdn.microsoft.com/en-us/library/ms173530.aspx

しかし、そのページには次のように書かれています。

行内テキスト機能は、SQL Server の将来のバージョンで削除される予定です。大きな値のデータを格納するには、varchar(max)、nvarchar(max)、および varbinary(max) データ型を使用することをお勧めします。

したがって、疑問は残ります。

編集。 このテーブル オプションを使用する機能がまだあるようです。

大きな値の型が行から外れています。値 1 は、テーブル内の varbinary(max)、xml、および大きなユーザー定義型 (UDT) の列が行の外に格納され、ルートへの 16 バイトのポインターがあることを意味します。値 0 は、varchar(max)、nvarchar(max)、varbinary(max)、xml、および大きな UDT 値が、8000 バイトの制限まで、値が記録。値がレコードに収まらない場合、ポインターは行内に保管され、残りは LOB 記憶域の行外に保管されます。0 がデフォルトです。

ただし、データが小さい場合、データを行に保持するオプションが失われているようです。オールインかオールアウトになります。これを行う他の方法はありますか?

0 投票する
1 に答える
1075 参照

sql-server - SSIS - varchar(最大)

長い文字列を連結し、SSIS に戻す sp があります。しかし、現在 SSIS は文字列を部分的にしか選択していません。

T-SQL ストアド プロシージャが長い文字列を SSIS に渡すことができる方法はありますか? 現在、パラメータは次のように定義されていますVARCHAR(max)

SSIS オブジェクト変数を使用しようとしましたが、文字列に戻すことができません。SSIS オブジェクトを文字列に変換する方法

SSIS 2012 を使用しています。

ありがとう

0 投票する
1 に答える
34 参照

sql-server - テキスト検索に適した特殊文字は?

Sql Server 2014 Express を使用しており、varchar(max) 列があります。このフィールドに特別な意味を与えるために、特殊文字を使用する必要がある場合があります。

たとえば、「123.456.234」という値がありますが、「678.*789.123」のような値を使用したいと思います。この 2 番目のケースの * は、値 789 が標準値 (アプリケーション ロジック内の標準値) ではなく、他の 2 つの値 678 と 123 が標準値であることを意味します。

しかし、クエリでこの列を使用して検索するときに、「*」を使用すると問題が発生するかどうかはわかりません。任意の文字を使用できます。文字列内の特定の値の意味を分離したいだけです。

本当にありがとう。

0 投票する
2 に答える
1981 参照

sql - T-SQL での VARCHAR への Smart CONVERT float

次のコードがあります

しかし、結果は213456790代わりに213456789.55

CONVERT(VARCHAR,213456789.55,1)私がそれを書き込もうとすると、そうでは213456789.55ありません213456790

これを解決するにはどうすればよいですか?

編集

次のように @m を Decimal として宣言するとDECLARE @m DECIMAL(18,2)=213456789.55問題は解決しましたが、float を使用する別の解決策があるかどうかを知りたいです。ありがとう

0 投票する
1 に答える
1468 参照

stored-procedures - データ型 0x23 は非推奨のラージ オブジェクト (LOB) ですが、出力パラメーターとしてマークされています

からvarchar(max)出力を受信しようとしていますが、上記のエラーが発生します。つまり、 inを実行するとparamstored procedureData type 0x23 is a deprecated large object, or LOB, but is marked as output parameterSPvb.net

SQLNCLI11接続文字列を使用してみましたが、運がDatatypecompatibility=80ありません 設定を試しましたが、運がありません

前もって感謝します。

ここに私のコードがあります:

0 投票する
0 に答える
65 参照

sql - SQL データ型 Varchar(max) 対 Varchar(8000)

私が理解していること: Varchar(100) で列を定義し、40 バイトのみを格納すると、SQL はそのセルに 40 バイトのみを割り当てます。知りたいこと: すべてのセルを Varchar(8000) として定義すると、何が問題になりますか? Varchar(100) または Varchar(8000 以外のもの) を使用する必要があるのはなぜですか?

また、8000が最大値であることを理解しているので、varchar(8000)の代わりにVarchar(max)を使用しないのはなぜですか。