在MS Query中使用“左”,“中”或“ Substr”时出现“找不到列”错误

时间:2019-08-22 09:15:17

标签: sql ms-query sage50

,并先感谢您的帮助。 我正在使用Microsoft Query询问Sage 50表。 我正在尝试创建一个仅包含客户帐户参考的第一位数字的用户定义字段。 通过使用Left或Mid函数,在查询SAP表时,我已经能够实现此结果。 当我用Sage尝试完全相同的方法时,出现错误“找不到列”

SQL如下:

SELECT INVOICE.ACCOUNT_REF, LEFT(INVOICE.ACCOUNT_REF,1)
FROM INVOICE INVOICE
WHERE (INVOICE.ACCOUNT_REF Like "CHA002")

我希望它的结果是“ C”,但是我得到了

  

未找到列

请帮助!我还需要做类似的事情以将年和日期字段隔离开-目前,我在这里也遇到相同的错误:-(

3 个答案:

答案 0 :(得分:1)

请注意,like运算符需要使用%字符:

SELECT ACCOUNT_REF, LEFT(ACCOUNT_REF,1)
FROM INVOICE
WHERE ACCOUNT_REF Like "CHA002%"

答案 1 :(得分:0)

您可以尝试一下。尝试为结果列赋予一些列名别名。
 还需要将"更改为'

SELECT INVOICE.ACCOUNT_REF, LEFT(INVOICE.ACCOUNT_REF,1) as "COLNAME"
FROM INVOICE INVOICE
WHERE (INVOICE.ACCOUNT_REF Like "CHA002")

您对SAGE的评论

在SAGE中,您需要使用mid函数mid$(EXP_STRING,EXP_POS,EXP_NB),或者可以使用相同语法的Instr
有关SAGE的更多信息,您可以找到此LINK

SELECT INVOICE.ACCOUNT_REF,  mid$(INVOICE.ACCOUNT_REF,1,1)
FROM INVOICE INVOICE
WHERE (INVOICE.ACCOUNT_REF Like "CHA002")

答案 2 :(得分:0)

我担心您的表别名为IV

您能不能更改表别名而不是实际的表名,例如SELECT IV.ACCOUNT_REF, LEFT(IV.ACCOUNT_REF, 1) AS FirstCharacter FROM INVOICE IV WHERE IV.ACCOUNT_REF LIKE 'CHA002'

因此以下查询可能有效:

featureText = re.sub("(.{150})", "\\1\n", featureText, 0, re.DOTALL)
#featureText contains some text from the api get request