SQL:列"%cointelegraph.com%"不存在



我需要你的帮助

我试图运行一个查询,我搜索域,但我得到这个错误:

Column "%cointelegraph.com%" does not exist

我所指的代码是:


SELECT * 
FROM fact f 
WHERE   f.country_id in (840) 
AND f.domain in ("%cointelegraph.com%","%coindesk.com%")  

你知道如何修复这个错误吗?

我将添加我使用SQL Vertica。

---------------------------------------------------------------

你的语法是关闭的,你应该使用两个LIKE表达式:

SELECT *
FROM fact
WHERE country_id = 840 AND
(domain LIKE '%cointelegraph.com%' OR domain LIKE '%coindesk.com%');

LIKE操作符在标准SQL中不支持任何IN构造。

你做错了。

你应该这样做:

SELECT * 
FROM fact f 
WHERE f.country_id = 840 
AND (f.domain LIKE '%cointelegraph.com%' OR f.domain LIKE '%coindesk.com%')

字符串在SQL中是用单引号括起来的,而不是你使用的双引号。

双引号用于表示标识符,即列名、数据库范围表达式(如CURRENT_DATE)、表或视图等。

如果您使用保留字,如"AS""USER",或者包含不属于程序员字的字母,如"This is a quoted column name"必须将标识符括在双引号中。Vertica,像任何遵守ANSI SQL标准的RDBMS一样,确信您在语法中的这个地方是指列名或伪列名,并且您得到的错误消息与此一致。

所以你的查询应该是这样的:

SELECT * 
FROM fact f 
WHERE   f.country_id in (840) 
-- AND f.domain in ("%cointelegraph.com%","%coindesk.com%")  -- not this
-- AND f.domain in ('%cointelegraph.com%','%coindesk.com%')  -- almost this
OR domain LIKE '%cointelegraph.com%' OR domain LIKE '%coindesk.com%' -- better this

事实上,你在域名周围使用百分号,意味着你想使用一个相似模式,而不是一个字符串来比较是否相等,所以IN()谓词不适用;您需要同时使用两个LIKE谓词OR-ed。

相关内容

  • 没有找到相关文章

最新更新