[英]SQL Stored Procedure if statement with bit
我的SQL存储过程中有if条件:
@isAlphabeticalSort bit = false
if(@isAlphabeticalSort = false)
ORDER BY V_CONSTAT_ACTUAL_DATES.DATE_TO_END
Else
ORDER BY V_CONSTAT_ACTUAL_DATES.JOB_NUMBER
但是我得到一些错误:
无效的列名false
'ORDER'附近的语法不正确
我什至尝试在if和else之间添加开始和结束,但仍然出现相同的错误....我在做什么错?
@isAlphabeticalSort bit = 0
参考: https : //msdn.microsoft.com/zh-cn/library/ms177603.aspx
您可能还会看看您的ORDER BY是如何编写的...
ORDER BY
CASE @isAlphabeticalSort
WHEN 0 THEN V_CONSTAT_ACTUAL_DATES.DATE_TO_END
ELSE V_CONSTAT_ACTUAL_DATES.JOB_NUMBER
END
编辑:您需要处理转换错误-例如:
ORDER BY
CASE @isAlphabeticalSort
WHEN 0 THEN CONVERT(VARCHAR(8),V_CONSTAT_ACTUAL_DATES.DATE_TO_END,112)
ELSE CONVERT(VARCHAR, V_CONSTAT_ACTUAL_DATES.JOB_NUMBER)
END
TSQL
将位识别为1
或0
。
因此,您可以执行以下操作:
@isAlphabeticalSort bit = 0
if(@isAlphabeticalSort = 0)
ORDER BY V_CONSTAT_ACTUAL_DATES.DATE_TO_END
Else
ORDER BY V_CONSTAT_ACTUAL_DATES.JOB_NUMBER
要么
@isAlphabeticalSort bit = 0
if(@isAlphabeticalSort = CAST('FALSE' AS BIT))
ORDER BY V_CONSTAT_ACTUAL_DATES.DATE_TO_END
Else
ORDER BY V_CONSTAT_ACTUAL_DATES.JOB_NUMBER
检查位值。
编辑:
这三个语句都是等效的:
if(@isAlphabeticalSort = 0)
if(@isAlphabeticalSort = CAST('false' as bit))
if(@isAlphabeticalSort = CONVERT(bit, 'false'))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.