代码之家  ›  专栏  ›  技术社区  ›  SeanY

在Where子句条件内,如通配符函数?

  •  0
  • SeanY  · 技术社区  · 7 年前

    大家下午好,

    这是我在论坛上的第二个问题,我相信随着我对TSQL及其动态功能的了解,这个数字会增加。如果有人能建议我是否使用最佳实践方法,我将不胜感激。

    这是我编写的一个函数,用于确定用户的位置:

        dbo.fnGetCOTLState(CURRENT_USER))
    

    在我创建的一个视图中,我有一个where子句,如下所示:

        (dbo.OfficersT.ProcessState = dbo.fnGetCOTLState(CURRENT_USER))
    

    由于最近的更改,我需要将此更新为a,以便更具动态性,因此我将=(equal)更新为a,如下所示:

        (dbo.OfficersT.ProcessState LIKE dbo.fnGetCOTLState(CURRENT_USER))
    

    然而,我意识到这仍然不足以提取我需要的记录,我必须通配符dbo。fnGetCOTLState函数,来自Microsoft access后台,我尝试了以下语法:

        (dbo.OfficersT.ProcessState LIKE '%' & dbo.fnGetCOTLState(CURRENT_USER)) & '%'
    
        (dbo.OfficersT.ProcessState LIKE %dbo.fnGetCOTLState(CURRENT_USER))%
    
        (dbo.OfficersT.ProcessState LIKE '%dbo.fnGetCOTLState(CURRENT_USER))%'
    

    但没有一个有效>_&书信电报;很可能我没有在google上使用正确的词,但我似乎找不到任何人试图在任何地方的函数上使用通配符!我甚至不知道这是否可能,但如果有人能提供一些我想要实现的信息,像往常一样,我将永远感激!!

    肖尼

    1 回复  |  直到 7 年前
        1
  •  1
  •   Tim Biegeleisen    7 年前

    你的一次尝试很接近。更改此项:

    (dbo.OfficersT.ProcessState LIKE '%' & dbo.fnGetCOTLState(CURRENT_USER)) & '%'
    

    对此:

    dbo.OfficersT.ProcessState LIKE '%' + dbo.fnGetCOTLState(CURRENT_USER) + '%'
    

    SQL Server中的字符串串联运算符为加号( + ),而不是安培和。可能是因为您有VBA背景,而事实上,在VBA背景中,安培数用于字符串串联。