Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何编写类似SQL的模式_Sql_Sql Server - Fatal编程技术网

如何编写类似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%” 是否可以制作

我有一个使用以下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等。

否。如果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开头的记录,有时只是看到所有记录。非常感谢您提供了这个伟大的解决方案,我选择了第一个选项来解析表达式