SQL 迁移到 MariaDB 环境时的语法问题

SQL Syntax Issue in Moving to MariaDB Environment

我正在更新一些 SQL 语法,因为我们要从 Sybase/SQL Anywhere 环境迁移到 MariaDB。我 运行 遇到的问题之一是这个:

UPDATE
  DBA_clients
SET
  DBA_clients.patient_firstname = Trim([patient_firstname]),
  DBA_clients.patient_lastname = Trim([patient_lastname])
WHERE
  (((DBA_clients.patient_firstname) Like "* *"))
  OR (((DBA_clients.patient_lastname) Like "* *"));

特别是 [patient_firstname][patient_lastname]

的语法错误

我尝试了各种更改,包括将这些列名放在引号内。这里的语法问题是什么,我该如何解决?

这里https://mariadb.com/kb/en/library/identifier-names/它说MariaDB中的正常引号字符是反引号,所以试试这个:

UPDATE
  DBA_clients
SET
  DBA_clients.patient_firstname = Trim(`patient_firstname`),
  DBA_clients.patient_lastname = Trim(`patient_lastname`)
WHERE
  (((DBA_clients.patient_firstname) Like "* *"))
  OR (((DBA_clients.patient_lastname) Like "* *"));

删除标识符的转义字符:

UPDATE DBA_clients
    SET patient_firstname = Trim(patient_firstname),
        patient_lastname = Trim(patient_lastname)
    WHERE patient_firstname Like '* *' OR
          patient_lastname Like '* *';

标识符没问题。他们不需要转义。

我删除了 table 引用,因为查询仅引用一个 table -- 并且包含较短 table 别名的机制在两个数据库中有所不同。

我还假设您正在查找名称中的空格,而不是与 '* *' 的完全匹配。如果是这样,正确的通配符(在 SQL Server 和 MariaDB 中)是 '%':

UPDATE DBA_clients
    SET patient_firstname = Trim(patient_firstname),
        patient_lastname = Trim(patient_lastname)
    WHERE patient_firstname Like '% %' OR
          patient_lastname Like '% %';

你有语法错误。请从 Trim.

中删除方括号

Trim([patient_firstname])Trim(patient_firstname)