我在 MySQL 中编写了一个查询:-
SELECT * FROM `employees` WHERE ((first_name LIKE "s%" OR middle_name LIKE "s%" OR last_name LIKE "s%")) ORDER BY first_name ASC;
我试图在 PostgreqSQL 中执行此查询,但它给出了一个错误,指出“s%”列不存在。
之后,我在 LIKE 语句中放置了单引号,而不是双引号。
SELECT * FROM `employees` WHERE ((first_name LIKE 's%' OR middle_name LIKE 's%' OR last_name LIKE 's%')) ORDER BY first_name ASC;
现在 PostgreSQL 执行该查询但它返回一个空集。 我正在使用 postgreSQL 8.3
最佳答案
由于员工周围的无效反引号,第二个语句不会在 PostgreSQL 中运行 - 但也许这是一个复制和粘贴错误。
如果你真的删除了那些可怕的反引号(这在 MySQL 中甚至不是必需的)很可能第二条语句没有返回任何值,因为 PostgreSQL 中的字符串比较区分大小写并且你的列包含大写字母 S
而不是 s
尝试:
SELECT *
FROM employees
WHERE ((lower(first_name) LIKE 's%' OR
lower(middle_name) LIKE 's%' OR
lower(last_name) LIKE 's%'))
ORDER BY first_name ASC;
关于MySQL 到 PostgreSQL 的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6482343/