如何降低此表达式的复杂性?

时间:2017-02-10 17:53:38

标签: tsql sql-server-2012

我的查询中有一个IIF说:

<batch:skippable-exception-classes>
<batch:include  class="org.springframework.dao.DataIntegrityViolationException" />
</batch:skippable-exception-classes>

其中'list'是13,000个varchar字符串,看起来像'MCSM349954987'

当我运行此查询时,我收到一条错误消息“内部错误:已达到表达式服务限制。请在查询中查找可能复杂的表达式,并尝试简化它们。”

有没有办法可以简化这个,以便我的查询能够运行?

1 个答案:

答案 0 :(得分:1)

看起来你想弄清楚如何比较那个列表......你可以用子查询做到这一点。

首先,使用TEMP TABLE将您的值从excel引入IF OBJECT_ID('tempdb..#tempTable') IS NOT NULL DROP TABLE #tempTable SELECT * INTO #tempTable FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0 Xml;HDR=YES;Database=C:\yourFolder\yourFile.xlsx', [ProductList$]);

IN

现在,您可以通过子选择将其用于SELECT CASE WHEN ApplicationDate BETWEEN @START and @END AND (convert(varchar,LEFT(AAA.LastName,2)+LEFT(BBB.CITY,2)+BBB.ZIPCode+RIGHT(CCC.SSN,4)) in (select * from #tempTable) THEN 'True' ELSE 'False' END as SomeNewColumn FROM SomeTable 子句。

if (newArr == null) ... free(myStruct->arr)