[英]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
但這不是有效的查詢。
同樣,在查詢中將語言更改為語言沒有區別-它轉換為小寫:
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>
此實現假定第一個字母是您要轉換的字母,但是此字母位於預期的雙引號字符之后。 (字符串中的第二位)
問候
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.