如何编写类似SQL的模式

时间:2019-02-20 14:42:18

标签: 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%'

是否可以制作一个模式来显示所有记录“不像'18%'”

'[^ 1] [^ 8]%'模式不是解决方案,因为它也排除了19,58等。

1 个答案:

答案 0 :(得分:0)

不。如果SQL Server支持正则表达式,这将很容易。

您可以做的一件事就是解析表达式。所以,这就是您想要的:

where (accountNumber like @param and @param not like '^%') or
      (accountNumber not like stuff(@param, 1, 1, '') and param like '^%')

然后您可以将'18%'的参数传递为like,将'^18%'的参数传递为not like

或者,您可以只使用两个参数:

where accountNumber like @like_param and
      accountNumber not like @notlike_param

默认值类似于'%'的{​​{1}}和@like_param的{​​{1}}。