SQL 修剪语法错误

SQL trimming syntax error

我刚刚完成了“SAM 的 24 小时自学 SQL”一书,我的任务是列出我们活跃网站的哪些 "site_code" 与其各自的 "site_path"s 删除了前缀“/var/www/html”。在过去一个小时左右的时间里,我一直在努力弄清楚自己做错了什么,现在不知道还能尝试什么。

这是我目前得到的:

SELECT site_name FROM example_tbl
WHERE active = 1
AND site_code IN
(SELECT TRIM(LEADING '/var/www/html/' FROM site_path) FROM example_tbl;);

尝试 运行 这给了我这个:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 4
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1

我在 Ubuntu ver 14.10

上使用 Mysql ver 14.14 Dustrib 5.5.38

嵌套查询本身工作正常,如果我从 'AND' 开始删除所有内容,第一部分也工作正常,所以我不确定为什么它们不能一起工作: \

如有任何帮助,我们将不胜感激!

编辑: 对不起,我应该更具体一点! 'site_code'、'site_path' 和 'site_name' 都是 table 'example_tbl' 中的所有列,我正在尝试获取要打印的站点名称列表

输入:/var/www/html/example.company.com 输出:example.example.com

编辑2: 哦,对于上面的例子: 'site_name' 将是:example.company.com 'site_code' 将是:示例 'site_path' 将是:/var/www/html/example.company.com

删除多余的分号。

SELECT site_name FROM example_tbl
WHERE active = 1
AND site_code IN
(SELECT TRIM(LEADING '/var/www/html/' FROM site_path) FROM example_tbl);

以下查询使用 MySQL SUBSTRING 函数而不是 TRIM:

SELECT site_name
FROM example_tbl
WHERE active = 1 AND
SUBSTRING(site_path, 1, 13) = '/var/www/html' AND
SUBSTRING(site_path, 14) = site_code

我认为您不需要子查询来解决您的问题。此外,我在 WHERE 子句中加入了一个条件,以检查 site_path 是否以 'var/www/html' 开头。如果您希望所有网站都以此开头,请随时删除此条件。