Ausführen von SQL-Benutzer-definierte Funktion, die zurückgibt, boolean, in die where-Klausel

Hoffe, dass dies nicht zu einfach scheinen. Ich habe mir das aber ich bin nicht so gut in SQL benutzerdefinierte Funktionen und Ihre Verwendung, also bin ich nicht sicher, was Los ist. Wer Lust hat ein paar Punkte für mich zu sagen, warum bin ich immer die Fehlermeldung:

Ausdruck nicht-booleschen Typs in einem Kontext, in dem ein
Bedingung erwartet wird, in der Nähe von ')'.

:

UPDATE LMI_Contact
SET Phone = NULL
WHERE dbo.LMI_IsSingleCharacterRepeated(Phone, '0')

wo die Funktion kann erstellt werden mit:

-- ***this will also find NULL and empty string values***
CREATE FUNCTION LMI_IsSingleCharacterRepeated (@string varchar(max), @char char(1))
RETURNS bit
AS 
BEGIN
    DECLARE @index int
    DECLARE @len int
    DECLARE @currentChar char(1)
    SET @index = 1
    SET @len= LEN(@string)

    WHILE @index <= @len
    BEGIN
        SET @currentChar = SUBSTRING(@string, @index, 1)
        IF @currentChar = @char
            SET @index= @index+ 1
        ELSE
            RETURN 0
    END
    RETURN 1
END;
GO

Diese Funktion ist für die überprüfung, ob eine Zeichenfolge eine angegebene einzelnes Zeichen wiederholt werden muss. Hoffe jemand findet es nützlich!

Vorsicht - mein-Funktion finden sich auch Felder mit null-Werten oder eine leere Zeichenfolge, so wirklich braucht, ein wenig mehr Arbeit

InformationsquelleAutor Johnny | 2013-05-31

Schreibe einen Kommentar