将postgres中的所有记录转换为Titlecase首字母大写

问题描述

|| 我在PostgreSQL中有一个名为关键字的简单表,其中有一个名为name的简单文本字段。我想将首字母大写转换为关键字的所有名称。有没有办法从psql控制台执行此操作?     

解决方法

        如果您要将每个关键字的首字母大写并将以下字符小写,则有一个
initcap()
函数:
update foo
set bar = initcap(bar)
其他结合combine2ѭ和
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     ,        
select initcap(\'r. lópez viña tondonia Rioja White Viña\');
在我们的Postgres版本(9.0.7)中,这确实给出了正确的答案(R.LópezViñaTondonia Rioja WhiteViña)。     ,        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\';
    ,        @denis,给出正确答案! 但在我的情况下,我使用PgAdmin3,因此在选择数据库之后,将使用SQL查询Options,因此我们可以在其中直接添加上述查询。 我有一个名为subcategory_subcategory(表的名称)的表,因为我想更改名称为Item_name(column的名称)的列值,所以我的查询就像这样
update subcategory_subcategory
set Item_name = initcap(Item_name)
    

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...