我的数字看起来像数据库(DB)中的P-01-2.8-M而我正在使用此查询:
SELECT LEFT(No, CHARINDEX('-', No, CHARINDEX('-', No) + 1) - 1) as Prefix
FROM DB, Table
WHERE No = GRNNo
AND QtyLeft > 0
AND No LIKE @No + '%'
GROUP BY LEFT(No, CHARINDEX('-', No, CHARINDEX('-', No) + 1) - 1)
ORDER BY MAX(No)
我得到“传递给LEFT或SUBSTRING函数的无效长度参数”。你能告诉我问题在哪里,如果可能的话,如何解决它。
提前致谢:)
答案 0 :(得分:0)
no
列中至少有一个值不包含两个连字符。
将您的查询更改为
SELECT LEFT(No, CHARINDEX('-', No, CHARINDEX('-', No) + 1) - 1) as Prefix
FROM DB
INNER JOIN Table ON No = GRNNo
WHERE QtyLeft > 0
AND No LIKE @No + '%'
AND CHARINDEX('-', No, CHARINDEX('-', No) + 1) > 0
GROUP BY LEFT(No, CHARINDEX('-', No, CHARINDEX('-', No) + 1) - 1)
ORDER BY MAX(No)
请注意我已将隐式联接更改为显式联接。