在SQL中查找参数选择IF语句

时间:2016-02-01 18:04:20

标签: sql-server tsql stored-procedures parameters

我已经找到了这样做的功能,但是现在我遇到了这个问题,我需要解析用户输入的参数,用户将输入类似11234#Elgin,address1,Address2我需要取出的东西第一个参数中的数字和#以便我只留下Elgin,我的函数看起来像这样:

CREATE FUNCTION dbo.JohnnyAddress1 (@office varchar(max), @home varchar(max), @school varchar(max))
RETURNS varchar(max)
as begin
declare @return varchar(max)

set @return = case @office
when 'Elgin' then @home
when 'Simcoe' then @school
when 'Grey Bruce' then @home
when 'Toronto School' then @school
when 'Muskoka School' then @school
when '' then ''

end
Return @return
end

我在想这样的事情:

declare @parsed varchar(max)
parsename(replace(@office,'#','.'),2) as @parsed

但是我对语法以及如何在我的案例中使用@parsed毫无头绪。

2 个答案:

答案 0 :(得分:0)

您没有指定您使用的SQL风格。这适用于T-SQL。

Select Right('1234#Elgin',Len('1234#Elgin')-Charindex('#','1234#Elgin',0))

从“#”的位置开始选择字符串的右侧部分。

答案 1 :(得分:0)

  

功能(1111#Elgin,Adress1,Address2)我需要拆分1111#Elgin   把它变成只是埃尔金,总会有一个#然后是名字,而且   我需要更改此参数才能使函数正常工作:

我认为这是#左侧和,

左侧的所有内容
SET @X = RIGHT(@INPUT,Charindex('#',@INPUT))
SET @Y = LEFT(@X, CHARINDEX(',',@X))

SELECT @Y