SQL 存在的问题
Posted
技术标签:
【中文标题】SQL 存在的问题【英文标题】:Problems with SQL EXISTS 【发布时间】:2012-06-18 13:04:48 【问题描述】:我要疯了。我有以下 SP:
ALTER PROCEDURE [BankImport].[spBI_getIsBatchUnique]
@batchName varchar = 500
AS
BEGIN
SET NOCOUNT ON;
IF (EXISTS (SELECT 1 FROM [ACN_Main].[BankImport].[tblBI_Jobs]
WHERE [batchNumber] = @batchName))
BEGIN
SELECT 1
END
ELSE
BEGIN
SELECT 0
END
END
GO
但无论请求是什么,我总是返回 0!
我尝试了多种方式修改它,但没有成功! 我需要做的是检查是否有该批号的记录并返回true,否则返回false。
有什么建议吗?
谢谢
【问题讨论】:
【参考方案1】:你的输入参数看起来有点搞笑
@batchName varchar = 500
应该是这样吗?
@batchName varchar(500)
即设置 varchar 数据类型的长度,你当前的长度,500 是batchName
参数的默认值。
【讨论】:
+1 目前它为varchar(1)
提供默认值500
,它会自动截断为*
。这不可能是想要的效果!
你在哪里对!!!!多么怀念啊!!!我在上面浪费了两个小时,以不同的方式重写了 10 次查询!谢谢!
@MaiOM 总是用长度定义 char/varchar/nchar/nvarchar。 sqlblog.com/blogs/aaron_bertrand/archive/2009/10/09/…【参考方案2】:
我想因为你比较batchNumber和batchName,试试
EXISTS (SELECT 1 FROM [ACN_Main].[BankImport].[tblBI_Jobs]
WHERE [batchName] = @batchName)
【讨论】:
这只是命名匹配。我解决了,检查@mouters 的答案。还是谢谢以上是关于SQL 存在的问题的主要内容,如果未能解决你的问题,请参考以下文章
Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server不存在或访问被拒绝