应用程序简介:
我写了一个Delphi应用程序,允许用户通过MySQL数据库或DB2数据库运行查询。应用程序使用TADOQuery组件来运行查询。SQL SUBSTR错误:什么是正确的语法?
该应用程序使用一个简单的接口来构建查询字符串,使用户无需SQL知识即可构建查询。用户从来没有看到任何SQL - 所有内容都以简单的英文显示,即使非技术用户也能理解他们在做什么。
应用程序检查用户使用查询构建接口输入的参数,并在后台构建SQL语句,在用户没有真正看到SQL本身的情况下提交它。
问题:
某些查询使用子字符串从特定字段中检索数据。当我使用SUBSTR语句时,我不在SUBSTR语句内的逗号后面添加空格。例如,SUBSTR(字段,1,10)。
大多数情况下都是这样,但是当PC上的语言环境设置为与英语不同的语言环境时(例如荷兰语,通过Windows控制面板中的区域设置小程序更改)时,此表单中的SUBSTR语句在DB2数据库上运行时失败(在MySQL上看起来很好)。
为了让SUBSTR在特定的语言环境中正确执行,我需要在逗号后面加空格。例如,SUBSTR(字段1,10)。
搜索SUBSTR语句的正确语法显示的例子都带有或不带逗号,尽管很显然,当我没有包含逗号时我发现了问题,所以我倾向于使用带有空格的版本。但是,我想知道的是,这是否是确定性语法,不管我是否会以这种方式使用SUBSTR时遇到任何问题,作为奖励,为什么当我不使用空格后出现错误首先是逗号。