Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Try_convert  [new]
Шамиль Фаридович
Member

Откуда: Саратов
Сообщений: 467
Стоит задача преобразовать значения поля типа nvarchar в uniqueidentifier. При ошибке преобразования нужно выводить Null.
На msdn нашел эту функцию http://msdn.microsoft.com/ru-ru/library/hh230993.aspx.
Но похоже она только для 2012 sql-сервера.
В принципе можно было бы создать аналогичную UDF, но внутри UDF запрещен TRY-CATCH. Как быть?
Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (X64) 
	Jun 17 2011 00:54:03 
	Copyright (c) Microsoft Corporation
	Standard Edition (64-bit)
10 сен 12, 16:16    [13141208]     Ответить | Цитировать Сообщить модератору
 Re: Try_convert  [new]
Glory
Member

Откуда:
Сообщений: 104760
Шамиль Фаридович
В принципе можно было бы создать аналогичную UDF, но внутри UDF запрещен TRY-CATCH. Как быть?

Написать UDF без TRY-CATCH. Просто с проверками.
10 сен 12, 16:24    [13141279]     Ответить | Цитировать Сообщить модератору
 Re: Try_convert  [new]
thrashead
Member

Откуда: Россия, Санкт-Петербург
Сообщений: 722
Шамиль Фаридович,

Нашёл где-то на просторах интернета:

ALTER function [srv].[IsGuid] ( @testString varchar(38))
returns int
as
begin
	declare
		@ret int;

	select
			@ret = 0,
			@testString = replace(replace(@testString, '{', ''), '}', '');

    if len(isnull(@testString, '')) = 36 and
       @testString NOT LIKE '%[^0-9A-Fa-f-]%' and
       -- check for proper positions of hyphens (-)  
       charindex('-', @testString) = 9 and 
       charindex('-', @testString, 10) = 14 and 
       charindex('-', @testString, 15) = 19 and 
       charindex('-', @testString, 20) = 24 and 
       charindex('-', @testString, 25) = 0
          set @ret = 1;

    return @ret;
end;
10 сен 12, 17:02    [13141588]     Ответить | Цитировать Сообщить модератору
 Re: Try_convert  [new]
Шамиль Фаридович
Member

Откуда: Саратов
Сообщений: 467
thrashead,
спасибо!
10 сен 12, 17:12    [13141683]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить