Oracle SQL:如何将列 header 的第一个字符大写而不是值?
Oracle SQL: How to capitalize first character of column header rather than the value?
我构建了一个语句,将结果假脱机到一个 .json 文件中。
使用 SQLcl,它开始为:
SET ENCODING UTF-8
SET SQLFORMAT JSON
SPOOL language.json
然后,我做选择。举个例子:
SELECT
INITCAP(ltl.language) language,
// ... goes on
输出:
"language":"En-Us"
这会将 language
的值大写——但是,如果我希望 language
在 .json 转储中成为 Language
怎么办?
我试过的是:
SELECT
ltl.language INITCAP(language),
// ... goes on
但这不是一个有效的查询。
此外,在查询中将语言更改为 Language 没有任何区别 - 它已转换为小写:
SELECT
INITCAP(ltl.language) Language,
输出:
"language":"en-US"
我想要的输出是:
输出:
"Language":"en-US"
如何从查询中实现?
您不能影响使用 /*json*/ 或 SQLFORMAT json 时生成的 json 值对 KEYS 的大小写。根据我们的 Oracle 规范,这些都是小写的。
您需要构建自己的 JSON 生成器,或者使用 RegEX 或您认为方便的任何内容编写一些 shell 脚本,并在事后初始化密钥。
您可以使用 regexp_replace() 函数。
我不知道你是如何组成你最终的 JSON 有效载荷的,但解决方法是这样的:
select regexp_replace('"language":"en-US"', '[a-z]', upper(substr('"language":"en-US"', 2, 1)), 1, 1, 'i')
from dual ;
SQL> select regexp_replace('"language":"en-US"', '[a-z]', upper(substr('"language":"en-US"', 2, 1)), 1, 1, 'i') language from dual
LANGUAGE
------------------
"Language":"en-US"
SQL>
此实现假定第一个字母是您要转换的字母,但该字母位于预期的双引号字符之后。
(字符串中的第二位)
此致
我构建了一个语句,将结果假脱机到一个 .json 文件中。
使用 SQLcl,它开始为:
SET ENCODING UTF-8
SET SQLFORMAT JSON
SPOOL language.json
然后,我做选择。举个例子:
SELECT
INITCAP(ltl.language) language,
// ... goes on
输出:
"language":"En-Us"
这会将 language
的值大写——但是,如果我希望 language
在 .json 转储中成为 Language
怎么办?
我试过的是:
SELECT
ltl.language INITCAP(language),
// ... goes on
但这不是一个有效的查询。
此外,在查询中将语言更改为 Language 没有任何区别 - 它已转换为小写:
SELECT
INITCAP(ltl.language) Language,
输出:
"language":"en-US"
我想要的输出是:
输出:
"Language":"en-US"
如何从查询中实现?
您不能影响使用 /*json*/ 或 SQLFORMAT json 时生成的 json 值对 KEYS 的大小写。根据我们的 Oracle 规范,这些都是小写的。
您需要构建自己的 JSON 生成器,或者使用 RegEX 或您认为方便的任何内容编写一些 shell 脚本,并在事后初始化密钥。
您可以使用 regexp_replace() 函数。
我不知道你是如何组成你最终的 JSON 有效载荷的,但解决方法是这样的:
select regexp_replace('"language":"en-US"', '[a-z]', upper(substr('"language":"en-US"', 2, 1)), 1, 1, 'i')
from dual ;
SQL> select regexp_replace('"language":"en-US"', '[a-z]', upper(substr('"language":"en-US"', 2, 1)), 1, 1, 'i') language from dual
LANGUAGE
------------------
"Language":"en-US"
SQL>
此实现假定第一个字母是您要转换的字母,但该字母位于预期的双引号字符之后。 (字符串中的第二位)
此致