我认为 IN 子句不能接受具有多个值的绑定参数。 Oracle 不能,需要几分钟
查询是
declare @setting varchar(max)
set @setting ='''Sales Entry Grid Cursor'',''Customer Mandatory'',''Column Uom'',''Show Marka'',''Show Discount Amount In Grid'',''Show Discount % In Grid'',''Calculation based on Weight *rate'''
存储过程是
Select pageconfig_action
From [RetailSoft].[dbo].[tbl_pageconfig]
Where [PageConfig_settingsName] in (@setting)
and PageConfig_CompanyId = 1
结果为空
并直接在关键字中传递字符串
Select pageconfig_action
From [RetailSoft].[dbo].[tbl_pageconfig]
Where [PageConfig_settingsName] in ('Sales Entry Grid Cursor', 'Customer Mandatory', 'Column Uom', 'Show Marka', 'Show Discount Amount In Grid', 'Show Discount % In Grid', 'Calculation based on Weight *rate')
and PageConfig_CompanyId=1
那么结果就可以了
在 SQL Server 2016+ 中:使用string_split
内置函数。请注意,不再需要额外的单引号:
DECLARE @setting varchar(max)
set @setting ='Sales Entry Grid Cursor,Customer Mandatory,Column Uom,Show Marka,Show Discount Amount In Grid,Show Discount % In Grid,Calculation based on Weight *rate'
Select pageconfig_action from [RetailSoft].[dbo].[tbl_pageconfig]
Where [PageConfig_settingsName] in(SELECT value FROM string_split(@setting, ',') )
and PageConfig_CompanyId=1
如果您运行早于 SQL 2016 的 SQL Server,@GuidoG 的答案是更好的方法
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)