【问题标题】:SQL SUBSTR error: What is the correct syntax?SQL SUBSTR 错误:什么是正确的语法?
【发布时间】:2011-02-08 11:08:10
【问题描述】:

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

应用程序使用简单的界面来构建查询字符串,允许不了解 SQL 的用户构建查询。用户在任何时候都看不到任何 SQL - 一切都是简单的英语,因此即使是非技术用户也可以理解他们在做什么。

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

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

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

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

搜索 SUBSTR 语句的正确语法会显示带逗号和不带逗号的示例,但显然我在不包括逗号时发现了问题,因此我倾向于使用带空格的版本。但是,我想知道的是这是否是确定的语法,我是否会以这种方式使用 SUBSTR 遇到任何问题,以及作为奖励,为什么我在之后不使用空格时会出现错误逗号放在首位。

【问题讨论】:

    标签: sql delphi


    【解决方案1】:

    正确的方法是有或没有空格。空格是可选的并且不被解析,如果你愿意,你甚至可以在逗号之后有 10 个空格,在逗号之前有 3 个空格(只是任意数字)。

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

    【讨论】:

      猜你喜欢
      • 2018-11-14
      • 2017-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多