2

我通过 unixODBC 使用 PHP 访问 AS400/DB2
但是我的 AS400 的某些字段名称以“££..”命名(无法更改)
当我尝试从我的 PHP 页面启动 sql 查询时

select * from LIBNAME.TABLE where ££FIELD like 'test%'

我总是收到相同的错误信息

SQL 错误:[unixODBC][IBM][System i Access ODBC Driver]Invalid string or buffer length., SQL 状态 S1090 in SQLExecDirect

如果有人有线索。

4

2 回答 2

0

DB2 应该有某种封装标识符的方法。一些数据库使用双引号

select * from "tableID" where "fieldID" like 'blah%'

mySQL 使用反引号。不确定是否使用 DB2,但应该不难发现和尝试。如果这不起作用,请查看是否有办法用字符串中的十六进制值表示字符。像 'hello\x0A\x0Dthere' 将是单词 'hello' 和 'there' 由换行符分隔。您可能只需要找到 £ 的价值。

于 2011-02-25T19:15:39.873 回答
0

尝试在查询执行之前添加此语句:

setlocale(LC_CTYPE, 'en_US');

有关该问题的更详细描述: http ://bugs.centos.org/view.php?id=3187

于 2012-06-03T09:07:52.597 回答