質問

っていう側からデータをSQL Serverデータベースとしてアクセスが制限されるからLinuxのwebサーバです。

いらないデータの編集だけを表示します。

全て見てきました出力が得られ、最初の255文字以内のコメントを指定します。

なんだろうけど、日本人にこの問題をよ式に基づPHP::PDOはがす作業。見ているがその他の人が同様の問題がありそうにないから多くの応答となります。

を使用していることの接続文字列は、MS SQL db:

$dbConn = new PDO("odbc:Driver=FreeTDS;DSN=OURDSN;UID=WWWUser;PWD=ourpassword");
役に立ちましたか?

解決

に応じて 式に基づユーザーガイド, 行うこと式に基づき取り扱 varchar 文字列で、半角255文字以内と話すとSQLサーバー "限界があり、そのプロトコルの定義".何よりも大き必要とするデータタイプ text.

できる問題解決のいずれかを変更スキーマに従って、データ変換のタイプの中で検索すると、このように:

SELECT CAST(mycol as TEXT) FROM mytable

他のヒント

あなたはFreeTDSのが使用する/etc/odbc.iniファイル内のテキストフィールドのサイズを増やすことができます。

[name_of_connection]
TextSize = 2097152

また、あなたがデータ検索のそのレベルを得ることができることを確認するためにPHPの低レベルのODBCルーチンを使用してみてください、そして、PDOを使用してまで戻って作業することができます。

あなたがvarchar型の255の以上のバイトを取得することができます、最大7.0プロトコルをした場合、

FreeTDSのは、デフォルトでは、プロトコルのバージョン4.2を使用しています。あなたは "CAST" ハックを使用するか、COLUMNのコルvarchar型(max)を変更することができます。

のvarchar(max)のVARCHARより完全に異なる列タイプ(DATA_TYPE 12 VS 2005)であり、切り捨てO / W FreeTDSの4.2経由でストリーミングされます。

なぜ、バージョン7にアップグレードしませんか? UTF-8は、新しいプロトコルとvarchar型に格納することはできませんので。 SQL Serverは、(UTF-16のような)UCS-2ですべてのプロトコル情報を送信し、保存する前に、テーブルや列の照合にデータを変換します。しかし、これはTBLにN.のINSERTとUTF8データを接頭辞する必要があります(TXT)の値(N'hello世界 ')

なぜCASTありませんか? TEXTは、MySQLとの互換性がないとしてキャスト(CHARとしてキャストを行う必要があります)。

プロトコル4.2にとどまるとvarchar(MAX)としてあなたのvarcharを定義するあなたが最も互換性のあるSQLを記述してみましょう。

この問題のもう一つの疑似事実。 2015年のように、第25タイプのXML結果の値を返すことの 6 の文字がきれいに戻されます。しかし、XMLの残りのほとんどは、テキストの時折明確な断片と、一見ランダムなゴミとして返されます。私は推測していた場合には実際には、クエリは、256の後のすべての文字のためのメモリのランダムブロックを返します。

私の特定のケースでは、私は、ディスプレイのためのウェブサイトに送信する(XMLネストされたクエリのために複数を使用して)XMLを生成していました。この場合、私が見つけた解決策は、varchar型(最大)にデータをキャスト、CASTのハックを使用することでした。

だから、覚えている:あなたはあなたのクエリ結果にランダムなゴミが続い256明確な文字のブロックが表示された場合、それは代わりにvarchar型(最大)のXML型として返されるXML値が入力おそらく

CAVEAT:XMLを動的に生成された場合にのみ適用される場合があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top