当我执行此查询时,我没有问题:
SELECT a.value, b.label AS campo, 'date' AS tipo
FROM contenido.field_value_textarea a
JOIN estructura.field b ON a.field=b.id
WHERE a.value LIKE '%aaa%'
contenido.field_value_textarea是character varying(2000)
但如果我尝试选择:
contenido.field_value_fecha哪个类型为date
我收到此错误消息:
错误:运算符不存在:date ~~ unknown
我要做的是在不同的表之间进行搜索,每个查询都选择FROM它的表。有些表使用文本值,textarea值,整数值,并且它可以工作,但是当值为date
时,所有表都会失败。我该怎么办?
编辑:顺便说一下,我的日期值是这样的:2009-05-01
答案 0 :(得分:11)
~~
运算符实际上是LIKE
operator。
您正尝试使用如下表达式:
contenido.field_value_fecha.value LIKE '%aaaa%'
也就是说,您正在尝试将日期与字符串进行比较(如果没有足够的上下文,则将其视为类型'未知'),并确定日期是否类似东西。
如果您确实想要进行这样的比较,则需要将日期转换为字符串,这可以通过以下方式完成:
contenido.field_value_fecha.value::text LIKE '%aaaa%'
或(使用标准SQL):
CAST(contenido.field_value_fecha.value AS text) LIKE '%aaaa%'
这在语法上是正确的......无论是否有意义,都是故事的另一部分。