【发布时间】:2017-08-08 13:34:57
【问题描述】:
我在数据库(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 函数的长度参数无效”。你能告诉我问题出在哪里,如果可能的话如何解决。
提前致谢:)
【问题讨论】:
-
LEFT(No, CHARINDEX('-', No, CHARINDEX('-', No) + 1) - 1)你想用这个实现什么?寻找第二个'-'然后得到其余的字符串?? -
为什么这被标记为 vb.net?我已经根据语法和错误消息添加了 sql-server 标记。
-
@DannyJames 得到第一个“-”和第二个“-”之间的字符串。
-
@ZoharPeled 我习惯将其标记为 VB.net,我通常发布与 VB.net 相关的问题。对此感到抱歉
-
Bad habits to kick : using old-style JOINs - 旧式 逗号分隔的表格列表 样式已替换为 ANSI 中的 proper ANSI
JOIN语法-92 SQL 标准(25 年前),不鼓励使用它
标签: sql sql-server