255バイトの壁

PHPからSQL Serverのデータを読み出す際に、テーブルのデータ型がCHAR/VARCHARだと255バイト以上読み出せない問題があることが発覚。
TEXT型だと何の問題もないので、VARCHAR型をTEXT型にCASTするVIEW噛ませて回避しました。

例えば・・・

CREATE TABLE TEST(
ID CHAR(10) PRIMARY KEY,
NOTICE NVARCHAR(500)
)

とした際に、PHPから普通にSELECT ID,NOTICE FROM TESTとしても、255バイトでカットされてしまいます。
この場合は、

CREATE VIEW V_TEST AS
SELECT ID,CAST(NOTICE as TEXT) NOTICE FROM TEST

という、NOTICE列をTEXT型にCASTするVIEWを作成して、SELECT * FROM V_TESTとすることで、完全な形でデータを取り出すことが出来ます。