我的查询中有一个IIF说:
<batch:skippable-exception-classes>
<batch:include class="org.springframework.dao.DataIntegrityViolationException" />
</batch:skippable-exception-classes>
其中'list'是13,000个varchar字符串,看起来像'MCSM349954987'
当我运行此查询时,我收到一条错误消息“内部错误:已达到表达式服务限制。请在查询中查找可能复杂的表达式,并尝试简化它们。”
有没有办法可以简化这个,以便我的查询能够运行?
答案 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)