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)
我正在更新一些 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)