我在PostgreSQL中有一个名为keywords的简单表,其中有一个名为name的简单文本字段。我想转换所有名称的关键字的第一个字母大写。有没有办法在psql控制台上做到这一点?
发布于 2011-05-30 20:13:29
有一个initcap()函数,如果你想要大写每个关键字的第一个字母,而小写下面的字符:
update foo
set bar = initcap(bar)否则结合使用substring()和upper()
update foo
set bar = upper(substring(bar from 1 for 1)) ||
substring(bar from 2 for length(bar))http://www.postgresql.org/docs/current/static/functions-string.html
发布于 2015-02-03 23:37:44
select initcap('r. lópez viña tondonia Rioja White Viña');在我们的Postgres版本(9.0.7)中,这确实给出了正确的答案(R. López Viña Tondonia Rioja White Viña)。
发布于 2018-04-16 04:58:45
initcap函数将特殊字符(破折号、撇号等)后面的字母大写。我只想在空格后大写。
与Denis的答案类似,此函数将转换每个单词的第一个字母(以空格分隔)
CREATE OR REPLACE FUNCTION titlecase(instr varchar) RETURNS varchar AS $$
DECLARE
strarray varchar[] := string_to_array(inStr, ' ');
outstrarray varchar[];
word varchar;
BEGIN
FOREACH word IN ARRAY strarray
LOOP
outstrarray := array_append(outstrarray, (upper(left(word,1))::varchar ||
lower(right(word,-1))::varchar)::varchar);
END LOOP;
RETURN array_to_string(outstrarray,' ','');
END;
$$ LANGUAGE 'plpgsql';https://stackoverflow.com/questions/6176057
复制相似问题