SQLCode = -138标记大型计数表但不是小型DB2

时间:2017-09-13 18:54:47

标签: sql db2 substring substr locate

我构建了一个视图,其中我使用以下代码从格式为'LastName,FirstName'的字段中仅提取姓氏:

VALUE(RTRIM(SUBSTR(A.PREVIOUS_NAMES,1,LOCATE(',', A.PREVIOUS_NAMES)-1)), '') 
AS "PREVIOUS_NAME",                                                         

当我在沙箱环境中工作时,此视图工作正常,但当我将其移动到测试,并尝试在DBVisualizer中打开视图时,数据结果提供错误:

THE SECOND OR THIRD ARGUMENT OF THE SUBSTR OR SUBSTRING FUNCTION IS OUT OF 
RANGE. SQLCODE=-138, SQLSTATE=22011, DRIVER=4.22.29

沙箱的记录不到11k,测试和产品系统接近120万,所以我猜这是一个性能问题,因为这段代码的复杂性。该视图似乎仍然已经创建,我可以查询它并返回一个特定的结果/结果集,我想我担心它是否可用于大型查询,或者在这种情况下性能是否真的是一个问题?

有没有更好的方法可以解析姓氏而无需在locate函数上使用子字符串?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

很可能这不是性能问题,只是某些行的数据没有逗号