0

PHPでMSSQLを使用して、コンテンツが非常に長いフィールドを読み取ると、エラーが発生します

警告:mssql_query()[function.mssql-query]:Unicodeのみの照合またはntextデータのUnicodeデータは、DB-Library(ISQLなど)またはODBCバージョン3.7以前を使用しているクライアントに送信できません。

オンラインで検索して、この問題を解決する方法を見つけました。読みやすいテキストを取得するには、結果をキャストする必要があることがわかりました。

SELECT CAST(Content AS TEXT) AS Content FROM myTable

しかし、私が得ている別の問題は、テキストデータが4096文字の後に切り捨てられることです。テキストをさらに読む方法、または返されたデータをキャストする別のオプションはありますか?

ありがとう

4

1 に答える 1

1

Management Studio で文字数をカウントしている場合は、次を試してください。

SELECT LEN(Content), DATALENGTH(Content) FROM dbo.myTable;

それはまだ4096を示していますか?私は賭けない。

TEXTとしてキャストしたくないと思います。Unicode 文字を使用している可能性があるため、NTEXT を使用していると思います。TEXT に変換すると、2 バイト文字が削除され、実際にデータが変更されます。おそらく、アプリケーションからこれを試すことができます:

SELECT CONVERT(NVARCHAR(MAX), Content) FROM dbo.myTable;

また、Management Studio の出力がデータベースの実際の内容を証明するものであることに依存しないでください。デフォルトでは切り捨てられ、デフォルトを変更した場合でも固定の最大値に制限されます (テキストへの結果またはグリッドへの結果に応じて異なる文字数)。列に含まれるデータの量を知りたい場合は、Management Studio ではなく、SQL Server に問い合わせてください (上記のように)。

于 2012-07-24T16:33:40.200 に答える