Нужно создать функцию в SQL, чтобы найти строку - PullRequest
1 голос
/ 20 августа 2010

Я пытаюсь написать функцию, которая может сказать мне, есть ли что-то после секунды;в строке или нет. Например: образец строки «2:00 AM; 3:00 PM;».Так что функция в этом случае должна возвращать false.

Ответы [ 3 ]

2 голосов
/ 20 августа 2010

Предполагая, что всегда будет секунда, а третьего нет, это должно сработать ...

CREATE FUNCTION dbo.fn_Bob(@str VARCHAR(20)) RETURNS BIT
BEGIN
  RETURN CASE WHEN @str LIKE '%;' THEN 0 ELSE 1 END
END
0 голосов
/ 20 августа 2010
create function [dbo].[udf_IsValidCheck](@Value varchar(64)) returns bit
as
begin
    declare @IsValidCheck bit
    select @IsValidCheck = (case when charindex( ';', @Value, charindex(';', @Value) + 1) > 0 
                                            and charindex( ';', @Value, charindex(';', @Value) + 1) < len(@Value) then 1
                                    else 0 end)
    return @IsValidCheck
end

данные испытаний:

'2:00AM;3:00PM;' --returns 0

'2:00AM;3:00PM' --returns 0

'2:00AM;3:00PM;3rdValue;4thValue;' --returns 1

'2:00AM;3:00PM;3rdValue;' --returns 1

'2:00AM;3:00PM;3rdValue' --returns 1

'2:00AM;' -- returns 0

'2:00AM;' -- returns 0
0 голосов
/ 20 августа 2010

CHARINDEX имеет необязательный параметр для выбора начальной позиции, поэтому найдите первый индекс «;»и добавьте 1, который будет начинаться со следующего символа, а затем проверьте следующий индекс, и длина должна быть больше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...