1

问题:针对 VARCHAR(256+) 字段的 MSSQL 查询在 PHP 中仅返回 255 个字符,无论 VARCHAR 大小是否大于 255。

我在这里这里看到了对解决方法的引用,其中解决方法基本上是将 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 驱动程序,但我必须将我的 PHP 版本更新到 5.3.6 或 5.4。我不完全确定如果我进行升级会带来什么。另外,我们必须在 PHP 应用程序中将所有 mssql_connect() 更改为 sqlsrv_connect() 以及从 mssql 到 sqlsvr 版本的其他函数。

有谁知道任何其他解决方法(比如我可以从可靠来源下载的更新的 DbLib C API),所以我不必去修改我的 PHP 应用程序中的所有内容?

4

3 回答 3

7

编辑/etc/freetds.conf以将tds version设置更改为 8.0(如果您的服务器是 MS SQL Server 2000 或更高版本)或 7.0(如果使用 MS SQL Server 7),必要时取消注释设置。

于 2012-12-06T17:47:57.983 回答
1

启动“MS SQL 管理工作室”

在这个窗口的主菜单查询\查询选项\中选择结果\文本,最后你会看到“每列中显示的最大字符数”默认为255,更改它。

于 2012-11-26T06:27:19.490 回答
0

I know its an old question but I'm looking for the same answer today ;)

I tested this solution

select *, CAST(DESCRESTESA AS TEXT) AS DESCRESTESA from table_name

and it worked out very well

于 2014-07-07T09:14:01.540 回答