我正在尝试为 SQL Server 2000 编写一个函数,我可以在其他存储过程中使用它来清理我们的计算机ID号:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- Description: The Purpose here is to just get the System (Chamber, Decay, Label, Tubing, etc.)
-- =============================================
CREATE FUNCTION [dbo].[fn_GetSysType] (@systemID varchar(50)) RETURNS varchar(50) AS
BEGIN
declare @sysID varchar(50)
set @sysID=LTrim(RTrim(@systemID))
if (0<Len(@sysID)) begin
set @sysID=(
case when (0<CharIndex('Inspect', @sysID)) then 'Inspect'
* case when (0<CharIndex('Label', @sysID)) then 'Label'
case when (0<CharIndex('Tubing', @sysID)) then 'Tubing'
case when (0<CharIndex('Expand', @sysID)) then 'Expand'
case when (0<CharIndex('Decay', @sysID)) then 'Decay'
case when (0<CharIndex('Chamber', @sysID)) then 'Chamber'
case when (0<CharIndex('Water', @sysID)) then 'Water'
case when (0<CharIndex('Sniff', @sysID)) then 'Sniff'
case when (0<CharIndex('Packout', @sysID)) then 'Packout'
case when (0<CharIndex('Shipping', @sysID)) then 'Shipping'
else 'Unknown' end)
end
return @sysID
END
GO
我尝试保存时的错误消息是:
关键字“case”附近的语法不正确。
在上面的星号。
我错过了什么?
答案 0 :(得分:4)
您只需使用CASE
一次。
...
set @sysID=(
case when (0<CharIndex('Inspect', @sysID)) then 'Inspect'
when (0<CharIndex('Label', @sysID)) then 'Label'
when (0<CharIndex('Tubing', @sysID)) then 'Tubing'
when (0<CharIndex('Expand', @sysID)) then 'Expand'
when (0<CharIndex('Decay', @sysID)) then 'Decay'
when (0<CharIndex('Chamber', @sysID)) then 'Chamber'
when (0<CharIndex('Water', @sysID)) then 'Water'
when (0<CharIndex('Sniff', @sysID)) then 'Sniff'
when (0<CharIndex('Packout', @sysID)) then 'Packout'
when (0<CharIndex('Shipping', @sysID)) then 'Shipping'
else 'Unknown' end)
...
答案 1 :(得分:2)
案例的SQL Server语法是:
set @sysID=(
case when (0<CharIndex('Inspect', @sysID)) then 'Inspect'
when (0<CharIndex('Label', @sysID)) then 'Label'
when (0<CharIndex('Tubing', @sysID)) then 'Tubing'
when (0<CharIndex('Expand', @sysID)) then 'Expand'
when (0<CharIndex('Decay', @sysID)) then 'Decay'
when (0<CharIndex('Chamber', @sysID)) then 'Chamber'
when (0<CharIndex('Water', @sysID)) then 'Water'
when (0<CharIndex('Sniff', @sysID)) then 'Sniff'
when (0<CharIndex('Packout', @sysID)) then 'Packout'
when (0<CharIndex('Shipping', @sysID)) then 'Shipping'
else 'Unknown' end)