如何编写类似SQL的模式
我有一个使用以下SQL的SQL过程:如何编写类似SQL的模式,sql,sql-server,Sql,Sql Server,我有一个使用以下SQL的SQL过程: select CenterExpensesID,sum(NISAmount) NISAmount from ktrn10_fnCostCentersTransactions(@month_start_date,@todate,'BEI') where AccountNumber like @like_account group by CenterExpensesID @like_account是一个可以获取模式的参数,例如“18%” 是否可以制作
select CenterExpensesID,sum(NISAmount) NISAmount
from ktrn10_fnCostCentersTransactions(@month_start_date,@todate,'BEI')
where AccountNumber like @like_account
group by CenterExpensesID
@like_account是一个可以获取模式的参数,例如“18%”
是否可以制作一个显示所有记录的模式“不像‘18%””
“[^1][^8]%”模式不是解决方案,因为它还排除了19,58等。否。如果SQL Server支持正则表达式,这将很容易 您可以做的一件事是解析表达式。所以,这就是你想要的:
where (accountNumber like @param and @param not like '^%') or
(accountNumber not like stuff(@param, 1, 1, '') and param like '^%')
然后,您可以将参数作为like
的'18%'
和not like
的'^18%
传入
或者,您可以只使用两个参数:
where accountNumber like @like_param and
accountNumber not like @notlike_param
对于
@like_-param
和@notlike_-param
的默认值类似于'%
,其中AccountNumber类似于@like_-account,AccountNumber不类似于'18%
?我将使用like
或not like
操作符构建一个查询,给定@like_account
有时我希望看到所有以18开头的记录,有时我希望看到不是以18开头的记录,有时只是看到所有记录。非常感谢您提供了这个伟大的解决方案,我选择了第一个选项来解析表达式