我正在尝试构建一个动态 LIKE 语句,其中当前年份的最后 2 位数字被传递到 LIKE 部分。
SELECT
COUNT(*) AS amount
FROM "ALLE" AS v
WHERE
(v.VMT != '' AND
v.VMT LIKE CONCAT(CONCAT('ID_', RIGHT(YEAR(NOW()),2)), '%') OR
v.VMT LIKE CONCAT('%', CONCAT('ID_', RIGHT(YEAR(NOW()),2)) )
PSQL 中的 CONCAT() 仅允许 2 个参数。
我尝试了不同的事情,例如:
CAST() 与 char 的 CONCAT
在 CONCAT 两边加上括号
使用WITH语句,PSQL不支持什么,所以我尝试使用CROSS JOIN从普通的select语句中输入字符串
在存储过程中使用 CONCAT/RIGHT 函数等看起来也行不通
文档链接:https://docs.actian.com/psql/psqlv13/index.html#page/sqlref%2Fsqlref.LIKE.htm%23
我猜这个问题只适用于 PervasiveSQL。
不知何故,我需要预先定义两个字符串,以便稍后将它们输入到 LIKE 部分中。但如何呢?
我认为 Pervasive / Actian 不支持
CONCAT
子句中的 LIKE
。我尝试了一个非常简单的说法:
SELECT * from T1 where C1 like concat('ID','test')
我收到一个语法错误,该错误表明 CONCAT 和括号之间存在问题。比如:
select * from T1 where C1 like concat<< ??? >>('ID','test')
在
CONCAT
子句中使用 WHERE
以及 = 有效。类似的东西
select * from T1 where C1 = concat('ID','test')
我建议联系 Actian 并向他们提出缺陷。