簡體   English   中英

Oracle SQL:如何大寫列標題的第一個字符而不是值?

[英]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.

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