Postgresql Postgres类%%语法错误

Postgresql Postgres类%%语法错误,postgresql,syntax,syntax-error,filtering,Postgresql,Syntax,Syntax Error,Filtering,我一直试图在postgres中进行之类的比较,但反复收到一个错误,告诉我“%@firstname%”列不存在 我应该澄清一下,这个查询是在一个函数中执行的,“@firstname”是传递给函数的参数 查询的相关部分如下: 其中u“firstname”类似于“%@firstname%” 我不需要精确的比较,这就是为什么我尝试将%%添加到查询中的原因。如果没有精确的查询,它就可以正常工作。每当我添加%时,它都会假定它们是变量名的一部分,并且随后找不到它 我还尝试了以下方法: “%”@firstnam

我一直试图在postgres中进行
之类的比较,但反复收到一个错误,告诉我
“%@firstname%”列不存在

我应该澄清一下,这个查询是在一个函数中执行的,“@firstname”是传递给函数的参数

查询的相关部分如下:

其中u“firstname”类似于“%@firstname%”

我不需要精确的比较,这就是为什么我尝试将%%添加到查询中的原因。如果没有精确的查询,它就可以正常工作。每当我添加%时,它都会假定它们是变量名的一部分,并且随后找不到它

我还尝试了以下方法:

  • “%”@firstname“%”
    这会导致返回空数组,即使它本应匹配

  • “%@firstname”%
    这会导致
    错误:列“%@filter”%”不存在

  • %“@firstname”%
    这会导致
    错误:列“%”@filter“%”不存在

  • 如果
    “@firstname”
    是一个参数,则需要类似以下内容:

    WHERE u.firstname LIKE concat('%', "@firstname", '%');
    
    如果
    “@firstname”
    是一个参数,则需要类似以下内容:

    WHERE u.firstname LIKE concat('%', "@firstname", '%');
    

    使用单引号“非双引号”表示string@GrzegorzGrabek我现在澄清了这个问题,但是“@firstname”是一个函数参数,所以它需要双引号。我试图通过执行
    “%”@firstname来规避这个问题“%”
    但这会将整个变量变成一个字符串,不再包含varaible。您应该避免使用带引号的标识符。它们会让你的生活变得更加复杂。使用单引号“而不是双引号”来表示string@GrzegorzGrabek我现在澄清了这个问题,但是“@firstname”是一个函数参数,所以它需要双引号。我试图通过执行
    “%”@firstname来规避这个问题“%”
    但这会将整个变量变成一个字符串,不再包含varaible。您应该避免使用带引号的标识符。它们让你的生活变得比它应该的复杂得多。我在读这篇文章之前尝试了FORMAT(),它奏效了,但我非常喜欢CONCAT()语法。我在读这篇文章之前尝试了FORMAT(),它奏效了,但我非常喜欢CONCAT()语法。