問題タブ [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.
sql - RTRIM が期待どおりに機能しない
何千回も使用してきた RTRIM が期待どおりに機能しないという奇妙な問題に直面しています。最後にスペースのように見える文字があるようですが、SQL 2008 はそれらをスペースとして扱わないため、最後の「スペース」は削除されません。「スペース」の数は行ごとに異なります。これまでに考えたことや遭遇したことのある人はいますか?
下のカーソルは、コンテンツを varchar(max) としてキャストしながらレコードを選択します。次に、末尾の文字を削除して varbinary(max) としてキャストバックしながら、コンテンツ キーに基づいてレコードを更新することになっています。ここに私のカーソルがあります:
アップデート:
digitalassetcontent.conent の例:0x457874656368203430304120414320636C616D70206D657465722C2041432063757272656E74206D6F64656C20746F206D65657420796F7572206170706C69636174696F6E206E656564732E20203230303020636F756E74204C434420646973706C61792E20204869676820616363757261637920666F722063757272656E74206D6561737572656D656E74732E2020302E3922202832336D6D29206A61772073697A65206163636F6D6D6F646174657320636F6E647563746F727320757020746F203330304D434D2E2020436F6E74696E756974792062656570657220616E642064696F646520746573742E20204461746120686F6C6420616E64206D617820686F6C642E20204F7665726C6F61642070726F74656374696F6E20666F7220616C6C2072616E6765732E20204F76657272616E676520616E64206C6F77206261747465727920696E64696361746F72732E20204175746F72616E67696E672077697468206175746F20706F776572206F66662E0D0A090909090909090909090D0A090909090909090909090D0A090909090909090909090D0A090909090909090909090x457874656368203430304120414320636C616D70206D657465722C2041432063757272656E74206D6F64656C20746F206D65657420796F7572206170706C69636174696F6E206E656564732E20203230303020636F756E74204C434420646973706C61792E20204869676820616363757261637920666F722063757272656E74206D6561737572656D656E74732E2020302E3922202832336D6D29206A61772073697A65206163636F6D6D6F646174657320636F6E647563746F727320757020746F203330304D434D2E2020436F6E74696E756974792062656570657220616E642064696F646520746573742E20204461746120686F6C6420616E64206D617820686F6C642E20204F7665726C6F61642070726F74656374696F6E20666F7220616C6C2072616E6765732E20204F76657272616E676520616E64206C6F77206261747465727920696E64696361746F72732E20204175746F72616E67696E672077697468206175746F20706F776572206F66662E0D0A090909090909090909090D0A090909090909090909090D0A090909090909090909090D0A090909090909090909090x457874656368203430304120414320636C616D70206D657465722C2041432063757272656E74206D6F64656C20746F206D65657420796F7572206170706C69636174696F6E206E656564732E20203230303020636F756E74204C434420646973706C61792E20204869676820616363757261637920666F722063757272656E74206D6561737572656D656E74732E2020302E3922202832336D6D29206A61772073697A65206163636F6D6D6F646174657320636F6E647563746F727320757020746F203330304D434D2E2020436F6E74696E756974792062656570657220616E642064696F646520746573742E20204461746120686F6C6420616E64206D617820686F6C642E20204F7665726C6F61642070726F74656374696F6E20666F7220616C6C2072616E6765732E20204F76657272616E676520616E64206C6F77206261747465727920696E64696361746F72732E20204175746F72616E67696E672077697468206175746F20706F776572206F66662E0D0A090909090909090909090D0A090909090909090909090D0A090909090909090909090D0A09090909090909090909
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 を使用)
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 がデフォルトです。
ただし、データが小さい場合、データを行に保持するオプションが失われているようです。オールインかオールアウトになります。これを行う他の方法はありますか?
sql-server - SSIS - varchar(最大)
長い文字列を連結し、SSIS に戻す sp があります。しかし、現在 SSIS は文字列を部分的にしか選択していません。
T-SQL ストアド プロシージャが長い文字列を SSIS に渡すことができる方法はありますか? 現在、パラメータは次のように定義されていますVARCHAR(max)
SSIS オブジェクト変数を使用しようとしましたが、文字列に戻すことができません。SSIS オブジェクトを文字列に変換する方法
SSIS 2012 を使用しています。
ありがとう
sql-server - テキスト検索に適した特殊文字は?
Sql Server 2014 Express を使用しており、varchar(max) 列があります。このフィールドに特別な意味を与えるために、特殊文字を使用する必要がある場合があります。
たとえば、「123.456.234」という値がありますが、「678.*789.123」のような値を使用したいと思います。この 2 番目のケースの * は、値 789 が標準値 (アプリケーション ロジック内の標準値) ではなく、他の 2 つの値 678 と 123 が標準値であることを意味します。
しかし、クエリでこの列を使用して検索するときに、「*」を使用すると問題が発生するかどうかはわかりません。任意の文字を使用できます。文字列内の特定の値の意味を分離したいだけです。
本当にありがとう。
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 を使用する別の解決策があるかどうかを知りたいです。ありがとう
stored-procedures - データ型 0x23 は非推奨のラージ オブジェクト (LOB) ですが、出力パラメーターとしてマークされています
からvarchar(max)
出力を受信しようとしていますが、上記のエラーが発生します。つまり、 inを実行するとparam
stored procedure
Data type 0x23 is a deprecated large object, or LOB, but is marked as output parameter
SP
vb.net
SQLNCLI11
接続文字列を使用してみましたが、運がDatatypecompatibility=80
ありません 設定を試しましたが、運がありません
前もって感謝します。
ここに私のコードがあります:
sql - SQL データ型 Varchar(max) 対 Varchar(8000)
私が理解していること: Varchar(100) で列を定義し、40 バイトのみを格納すると、SQL はそのセルに 40 バイトのみを割り当てます。知りたいこと: すべてのセルを Varchar(8000) として定義すると、何が問題になりますか? Varchar(100) または Varchar(8000 以外のもの) を使用する必要があるのはなぜですか?
また、8000が最大値であることを理解しているので、varchar(8000)の代わりにVarchar(max)を使用しないのはなぜですか。