SQL SUBSTR错误:正确的语法是什么?

Jee*_*dee 1 sql delphi

应用程序简介:
我编写了一个Delphi应用程序,允许用户通过MySQL数据库或DB2数据库运行查询.该应用程序使用TADOQuery组件来运行查询.

该应用程序使用一个简单的接口来构建查询字符串,允许不了解SQL的用户构建查询.用户在任何时候都不会看到任何SQL - 一切都是简单的英语,所以即使是非技术用户也能理解他们在做什么.

应用程序检查用户使用查询构建接口输入的参数,并在后台构建SQL语句,在用户实际看不到SQL本身的情况下提交它.

问题:
某些查询使用子字符串从某些字段中检索数据.当我使用SUBSTR语句时,我不会在SUBSTR语句中的逗号后面添加空格.例如,SUBSTR(字段,1,10).

这在大多数情况下都很好,但是当PC上的区域设置设置为与英语不同的区域设置时(例如荷兰语,通过Windows控制面板中的区域设置小程序更改),此形式的SUBSTR语句在运行时失败一个DB2数据库(它似乎比MySQL好).

为了让SUBSTR在该特定语言环境中正确执行,我需要在逗号后面添加空格.例如,SUBSTR(字段,1,10).

搜索SUBSTR语句的正确语法会显示带逗号和不带逗号的示例,但显然当我没有包含逗号时我发现了问题,所以我倾向于使用带空格的版本.但是,我想知道的是这是否是确定的语法,无论我是否会以这种方式使用SUBSTR出现任何问题,作为奖励,为什么我在以后不使用空格时会出现错误首先是逗号.

Ric*_*iwi 5

正确的方式是有无空间.空格是可选的而不是解析的,你甚至可以在逗号之后有10个空格,如果你愿意,你可以有3个空格(只是任意数字).

SUBSTR(字段1,10)在某些语言环境中不起作用的原因是因为我突出显示的部分.在欧洲国家,小数符号是逗号,而不是句点.通过放置一个空格并使其成为SUBSTR(字段,1, 10),1, 10非常清楚地分成两个参数,因此不再有任何混淆.