2016-05-21 9 views
0

Vor ein paar Jahren, ich fand diese CAP_FIRST Funktion für MySQL:konvertieren CAP_FIRST Funktion von MySQL zu PostgreSQL

CREATE FUNCTION CAP_FIRST (input VARCHAR(255)) 
RETURNS VARCHAR(255) 
DETERMINISTIC 

BEGIN 
    DECLARE len INT; 
    DECLARE i INT; 

    SET len = CHAR_LENGTH(input); 
    SET input = LOWER(input); 
    SET i = 0; 

    WHILE (i < len) DO 
     IF (MID(input,i,1) = ' ' OR MID(input,i,1) = '-' OR i = 0) THEN 
      IF (i < len) THEN 
       SET input = CONCAT(
        LEFT(input,i), 
        UPPER(MID(input,i + 1,1)), 
        RIGHT(input,len - i - 1) 
       ); 
      END IF; 
     END IF; 
     SET i = i + 1; 
    END WHILE; 

    RETURN input; 
END; 

ich diese Funktion verwendet haben ausgiebig Die Namen, um eine ordnungsgemäße Aktivierung für Berichte zu konvertieren, etwa so:

UPDATE DataImport 
    SET FirstName = CAP_FIRST(FirstName); 

UPDATE DataImport 
    SET LastName = CAP_FIRST(LastName); 

Jetzt migriere ich zu PostgreSQL, und benötige diese gleiche Funktionalität dort. Muss ich diese Funktion in PostgreSQL konvertieren, oder gibt es eine bessere Möglichkeit, die gleichen Ergebnisse zu erhalten? Wenn ich konvertieren muss, kann mir jemand helfen?

Antwort

0

Es stellt sich heraus, dass PostgreSQL eine eingebaute Funktion hat initcap(), die für mich tut dies wie folgt:

UPDATE DataImport 
    SET FirstName = initcap(FirstName); 

UPDATE DataImport 
    SET LastName = initcap(LastName); 
Verwandte Themen