2017-02-22 20 views
-1

Я пытаюсь создать sql-функцию, которая вернет имя из столбца полного имени. Сейчас он возвращает фамилию в формате Last, First. Предположим, что вы вернете первое имя после,SQL Function Debugging

Моя функция подстроки - это начало захвата информации по адресу @ index + 2, но она начинается с начала. Я не уверен, что не так?

Create Function dbo.fnGetFirstName (@fullname varchar(100)) 
Returns Varchar(50) 
AS 
Begin 
--declare the local variable: firstName 
Declare @fn varchar(50); 
--declare the index variable to find the index of the separator that separates last name from first name 
Declare @index int; 
--get the separator index value 
SET @index = CHARINDEX(',',@fullname); 
--check if the default separator (,) exists 
IF @index > 0 
--if it does, use the substring function to find the First name 
BEGIN 
    Set @fn = SUBSTRING(@fullname, @index+2, LEN(@fullname)[email protected]); 

END 
+0

кажется, что отсутствует END – McNets

+0

Это был недостающий конец. Спасибо за совет. Не могу поверить, что я пропустил это ..... –

+0

Я думаю, что он отлично работает: http://rextester.com/ISBH13610 – McNets

ответ

0

мне не хватает End, чтобы закончить функция

0

Создание функции dbo.fnGetFirstName (@fullname VARCHAR (100)) возвращает VARCHAR (50) AS Begin --declare локальной переменной : firstName Объявление @fn varchar (50); --declare индексная переменная, чтобы найти индекс разделителя, который отделяет фамилию от имени Объявить @index int; - значение индекса разделителя SET @index = CHARINDEX (',', @ fullname); --check если разделитель по умолчанию (,) существует IF @index> 0 --Если это, используйте функцию подстроку, чтобы найти имя BEGIN Set @fn = SUBSTRING (@fullname, @ индекс + 2 , LEN (@fullname) - @ index); END возвращение @fn END