我有一个SQL 2000存储过程,它有一个输入参数,数据类型为varchar(17),用于处理字母数字的车辆标识符(VIN)。但是,每当我在执行时输入参数值时,如果参数中包含数字,则会给出错误。它似乎只接受字母字符。我在这里做错了什么?
答案 0 :(得分:5)
根据评论,SQL Server有一个微妙的“功能”,允许字母a-z用作存储的proc参数而不带分隔符。它永远存在(至少6.5)
我不确定完整的规则,但它在MSDN (rename SQL Server etc)中得到证明:“local”参数周围没有分隔符。我刚发现这个KB article on it
在这种情况下,它可以从一个打破的数字开始。我认为它适用于包含的数字(但正如我所说,我不确定完整的规则)。
编辑:马丁确认为“打破领先号码”,“包含号码”确定
答案 1 :(得分:-1)
这无济于事,但在某处,您的代码中存在错误,拼写错误或疏忽。我花了2年多时间使用VIN作为参数,除了后悔没有使它成为char(17)而不是ov varchar(17)之外,我们从未在传递字母数字VIN值时遇到任何问题。在某个地方,我猜它是在应用程序层,有些东西不喜欢数字 - 也许是一个只搜索字母字符的过滤器?