问题:针对VARCHAR(256+)字段的MSSQL查询在PHP中仅返回255个字符,无论VARCHAR大小是否大于255。
我已经看到了对变通方法here和here的引用,其中解决方法基本上是将VARCHAR强制转换为TEXT:
SELECT CAST(myField AS TEXT) AS myField FROM myTable
但如果我有一堆查询,这无济于事:
SELECT * FROM myTable
我的意思是,当然,我可以查找所有类似的查询并执行:
SELECT CAST(myField AS TEXT) AS 'myField2', * FROM myTable
并将后续PHP变量从myField更新到myField2,但这对我的应用程序来说是一项非常重要的任务。更不用说我必须查找所有具有VARCHAR(256+)的表中的所有字段,然后在我的PHP应用程序中查找所有受影响的查询。
我们正在运行PHP 5.2.17并且我理解MSSQL不再受支持/开发了。我见过Microsoft支持的SQL Server驱动程序here,但我必须将我的PHP版本更新为5.3.6或5.4。如果我进行升级,我不完全确定会带来什么。另外,我们必须将所有mssql_connect()更改为sqlsrv_connect(),并将其他函数从mssql更改为我们的PHP应用程序中的sqlsvr版本。
有没有人知道任何其他解决方法(比如我可以从可信赖的来源下载更新的DbLib C API)所以我不必修改我的PHP应用程序中的所有内容?
答案 0 :(得分:7)
编辑/etc/freetds.conf
将tds version
设置更改为8.0(如果您的服务器是MS SQL Server 2000或更高版本)或7.0(如果使用MS SQL Server 7),必要时取消注释设置。< / p>
答案 1 :(得分:1)
启动“MS SQL Managment Studio”
在主菜单中查询\查询选项\在此窗口中选择结果\文本,最后您将看到“每列中显示的最大字符数”,聋人有255,更改它。
答案 2 :(得分:0)
我知道这是一个老问题,但我今天正在寻找相同的答案;)
我测试了这个解决方案
select *, CAST(DESCRESTESA AS TEXT) AS DESCRESTESA from table_name
并且效果非常好