【发布时间】:2016-08-30 07:41:04
【问题描述】:
我尝试了以下存储过程
ALTER PROCEDURE spvec
AS
SELECT Row_number() OVER (ORDER BY (SELECT 1)) AS 'RNumber'
,vf.*
FROM LOGIN ld
,vehicle vf
WHERE (ld.fid = vf.fid)
AND ld.id <> 'NA'
AND vf.CustID <> 'None'
AND vf.Simo <> 'None'
ORDER BY Row_number() OVER (ORDER BY (SELECT 1))
行中没有文本和 NA 文本。例如没有空,但有没有值,NA 这里在哪里(ld.fid = vf.fid)
更新
ld.fid 是字符串 并且 vf.fid 在 int 中
所以我尝试转换
ALTER PROCEDURE spvec
AS
SELECT Row_number() OVER (ORDER BY (SELECT 1)) AS 'RNumber'
,vf.*
FROM LOGIN ld
,vehicle vf
WHERE CAST((ld.FFID=vf.FFID) AS INT)
AND ld.id <> 'NA'
AND vf.CustID <> 'None'
AND vf.Simo <> 'None'
ORDER BY Row_number() OVER (ORDER BY (SELECT 1))\
这显示更新时出现以下错误
关键字“AS”附近的语法不正确。
')' 附近的语法不正确。
它会在不更新的情况下引发以下错误
将 varchar 值 'none' 转换为数据类型 int 时转换失败。
【问题讨论】:
-
您期待什么?
'none'不是有效的整数值。 -
行中没有文本和 NA 文本。例如没有空,但有没有值,NA
-
看起来
ld.id、vf.CustID是整数值,为什么要检查None字符串值? -
顺便说一句:你使用的是 old-fashioned JOIN... 而不是
FROM tbl1,tbl2 WHERE tbl1.ID=tbl2.FKID更好地使用FROM tbl1 INNER JOIN tbl2 ON tb1.ID=tbl2.FKID -
@jarlh 检查更新
标签: sql sql-server sql-server-2008