从DB2AS400中的列中获取最后2个字符
我有一个简单的select查询,它位于openquery中从DB2AS400中的列中获取最后2个字符,db2,ibm-midrange,Db2,Ibm Midrange,我有一个简单的select查询,它位于openquery中 SELECT MyColumn, RIGHT(MyColumn,2) FROM MyTable 然而,这会产生错误 原因……:在令牌2处检测到语法错误。代币,2 不是有效的令牌。有效令牌的部分列表为) 万一有人有这个问题 RIGHT(MyColumn,2) gives token error RIGHT(MyColumn, 2) is correct 实际查询的结果 SELECT * FROM OPENQUERY
SELECT
MyColumn,
RIGHT(MyColumn,2)
FROM MyTable
然而,这会产生错误
原因……:在令牌2处检测到语法错误。代币,2
不是有效的令牌。有效令牌的部分列表为)
万一有人有这个问题
RIGHT(MyColumn,2) gives token error
RIGHT(MyColumn, 2) is correct
实际查询的结果
SELECT * FROM OPENQUERY(linkServer, 'SELECT RIGHT(MyColumn, 2) FROM MyTable')
在my 7.3上有以下功能:
从(值'1234')MyTable(MyColumn)中选择MyColumn,RIGHT(MyColumn,2)代码>您的IBM i版本是什么?我发现了问题,它与逗号和2之间的空格有关。。。。在我添加了这个空间之后,它工作了。不知道为什么,可能是因为我正在使用open query在AS400上运行此查询。最好在逗号后面加一个空格,用作参数分隔符,因为在不同的地区或设置中,逗号也可以用作小数点。这是语法错误最可能的原因。您的代码不仅在空间上更具可移植性,而且可以说更具可读性。算了吧,现在已经远远超过了我们必须节省每个字节的时代了。我们能负担得起分离器后的空间。(我们现在甚至可以承受4位数的年数了!你相信吗?!)我不认为这是DB2的问题,因为这种语法在嵌入式SQL和SQuirreL SQL客户机中工作。但我注意到,在DBeaver SQL客户机中偶尔会出现这种行为。但在这种情况下不是这样。