簡體   English   中英

將 snake_case 轉換為 camelCase - Postgres

[英]Convert snake_case to camelCase - Postgres

我基本上需要相反的東西。

將 CamelCase 轉換為 snake_case

我有一個字符串字段,它是一個蛇形標識符。
我想將其轉換為駝峰式大小寫。

在 Postgres 中是否有一種可靠且簡單的方法來做到這一點?

獲取 CamelCase。

  1. 將 _ 替換為空格。
  2. 用 initcap 大寫每個單詞。
  3. 刪除空格。

如果你特別想要camelCase。

  1. 第一個字母小寫。
create function lcfirst(word text)
returns text
language plpgsql
immutable
as $$
begin
  return lower(left(word, 1)) || right(word, -1);
end;
$$;

create function camel_case(snake_case text)
returns text
language plpgsql
immutable
as $$
begin
  return
    replace(
      initcap(
        replace(snake_case, '_', ' ')
      ),
      ' ', ''
    );
end;
$$;

select lcfirst(camel_case('snek_snek_snek'));
   lcfirst    
--------------
 snekSnekSnek

請參閱其他字符串函數

使用 INITCAP()

SELECT name, INITCAP(name) FROM customer

結果

JOHN         John
marie lisa   Marie Lisa
CREATE OR REPLACE FUNCTION snake_to_camel(text)
RETURNS text AS $$
DECLARE
    input_text text := $1;
    output_text text := '';
    last_char_was_underscore boolean := false;
BEGIN
    FOR i IN 1..length(input_text) LOOP
        IF substring(input_text, i, 1) = '_' THEN
            last_char_was_underscore := true;
        ELSE
            IF last_char_was_underscore THEN
                output_text := output_text || upper(substring(input_text, i, 1));
                last_char_was_underscore := false;
            ELSE
                output_text := output_text || lower(substring(input_text, i, 1));
            END IF;
        END IF;
    END LOOP;
    RETURN output_text;
END;
$$ LANGUAGE plpgsql;

要使用此函數,請使用 snake case 字符串作為參數調用它,如下所示:

SELECT snake_to_camel('some_snake_case_string');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM