在Where子句标准中,如通配符函数?

时间:2018-01-29 06:07:03

标签: function tsql where wildcard

下午好,

所以这是我在论坛上的第二个问题,我确信随着我对TSQL及其动态功能的更多了解,这个数字会增加。如果我能使用最佳实践方法,任何人都可以提出建议,我们将不胜感激。

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

    dbo.fnGetCOTLState(CURRENT_USER))

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

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

由于最近的更改,我需要将其更新为更动态,所以我将=(等于)更新为如下所示:

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

但是我意识到这仍然不足以提取我需要的记录,我必须使用dbo.fnGetCOTLState函数并且来自Microsoft访问后台我尝试了以下语法:

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

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

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

但它们都没有工作> _<很可能我没有使用正确的单词谷歌,但我似乎找不到任何人试图在任何地方的功能使用外卡!不确定它是否可能,但如果有人能提供一些我想要达到的信息,就像往常一样,我会永远感激!!

SeanY

1 个答案:

答案 0 :(得分:1)

你的一次尝试很接近。改变这个:

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

到此:

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

SQL Server中的字符串连接运算符是加号(+),而不是ampsersand。也许这种混乱来自于你拥有VBA背景,其中实际上使用了&符号进行字符串连接。

相关问题