2016-05-21 101 views
0

幾年前,我發現MySQL的這個CAP_FIRST功能:從MySQL轉換CAP_FIRST功能向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; 

我已經使用這個功能,廣泛的人的名字轉換成合適的資本化報表,就像這樣:

UPDATE DataImport 
    SET FirstName = CAP_FIRST(FirstName); 

UPDATE DataImport 
    SET LastName = CAP_FIRST(LastName); 

現在我正在遷移到PostgreSQL,並且需要這個相同的功能。我是否需要將此函數轉換爲PostgreSQL,還是有更好的方法來獲得相同的結果?如果我確實需要轉換,有人可以幫助我嗎?

回答

0

事實證明,PostgreSQL有一個內建功能initcap()做這個工作對我來說,像這樣:

UPDATE DataImport 
    SET FirstName = initcap(FirstName); 

UPDATE DataImport 
    SET LastName = initcap(LastName);