PervasiveSQL CONCAT 在 LIKE 语句中不起作用

问题描述 投票:0回答:1

我正在尝试构建一个动态 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 个参数。

我尝试了不同的事情,例如:

  1. CAST() 与 char 的 CONCAT

  2. 在 CONCAT 两边加上括号

  3. 使用WITH语句,PSQL不支持什么,所以我尝试使用CROSS JOIN从普通的select语句中输入字符串

  4. 在存储过程中使用 CONCAT/RIGHT 函数等看起来也行不通

文档链接:https://docs.actian.com/psql/psqlv13/index.html#page/sqlref%2Fsqlref.LIKE.htm%23

我猜这个问题只适用于 PervasiveSQL。
不知何故,我需要预先定义两个字符串,以便稍后将它们输入到 LIKE 部分中。但如何呢?

sql sql-like pervasive pervasive-sql
1个回答
0
投票

我认为 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 并向他们提出缺陷。

© www.soinside.com 2019 - 2024. All rights reserved.