適用於:
Databricks SQL
Databricks Runtime 11.3 LTS 和更新版本
傳回將 expr 使用格式 STRING 轉換為 fmt。
在 Databricks Runtime 14.0 和更早版本中 to_char ,支持 expr 數值類型。
在 Databricks SQL 和 Databricks Runtime 14.1 和更高版本to_char中,也支援類型exprDATETIMESTAMP的BINARY
to_char是to_varchar的同義字。
語法
to_char(expr, { numericFormat | datetimeFormat | stringFormat } )
numericFormat
{ ' [ S ] [ L | $ ]
[ 0 | 9 | G | , ] [...]
[ . | D ]
[ 0 | 9 ] [...]
[ L | $ ] [ PR | MI | S ] ' }
引數
-
expr:數值、日期時間、STRING或BINARY類型的表達式。 -
numericFormat:STRING字面量,指定數值類型expr的格式化輸出。 -
datetimeFormat:用於指定STRING為 datetime 類型之格式化輸出的expr字面值。 -
stringFormat:指定格式化輸出的STRING常值,以expr類型的BINARY。
退貨
STRING,表示格式化作業的結果。
datetmeFormat 可以包含 Datetime 模式中指定的 模式。
stringFormat 可以是下列其中一項(不區分大小寫):
'base64'
Base64 字串
'hex'
十六進位格式的字串。
'utf-8'
輸入二進位檔會譯碼為UTF-8字串。
numericFormat 可以包含下列元素(不區分大小寫):
0或9指定介於 0 到 9 之間的預期數位。 格式字串中值介於 0 到 9 之間的數位序列符合輸入值中的數位序列。 這會產生與格式字串對應序列相同長度的結果字串。 如果 0/9 序列包含的數位比十進位值的相符部分多,則結果字串會以零填補,開頭為 0,且在小數點之前。 否則,會填充空格。
.或D指定小數點的位置(選擇性,只允許一次)。
,或G指定群組 (千) 分隔符 (,,) 的位置。 每個群組分隔符的左邊和右邊必須有 0 或 9。
$指定 $ 貨幣符號的位置。 這個字元只能指定一次。
S或MI指定 '-' 或 '+' 符號的位置(選擇性的,只允許在格式字串的開頭或結尾一次)。 請注意,
S在正值時列印為+,但MI則列印為空格。PR只有在格式字串結尾才允許;指定輸入值為負數時,結果字串會以角括號包裝。 ('<1>')。
如果 numExpr 的整數部分或小數部分需要比 fmt 所允許的對應部分有更多的位數,則函式會在 fmt 中傳回這兩個部分,並以 0 取代 9 和 #。例如 '$###.##'。
如果 fmt 格式不正確的 Databricks SQL 會傳回錯誤。
此函式是to_varchar的別名。
範例
> SELECT to_char(454, '999');
454
> SELECT to_char(454, '000.00');
454.00
> SELECT to_char(12454, '99,999');
12,454
> SELECT to_char(78.12, '$99.99');
$78.12
> SELECT to_char(-12454.8, '99,999.9S');
12,454.8-
> SELECT to_char(12454.8, '99,999.9S');
12,454.8+
> SELECT '>' || to_char(123, '00000.00') || '<';
>00123.00<
> SELECT '>' || to_char(123, '99999.99') || '<';
> 123.00<
> SELECT to_char(1.1, '99');
##
> SELECT to_char(111.11, '99.9');
##.#
> SELECT to_char(111.11, '$99.9');
$##.#
> SELECT to_char(date'2016-04-08', 'y');
2016
> SELECT to_char(x'537061726b2053514c', 'base64');
U3BhcmsgU1FM
> SELECT to_char(x'537061726b2053514c', 'hex');
537061726B2053514C
> SELECT to_char(encode('abc', 'utf-8'), 'utf-8');
abc
> SELECT to_char(111, 'wrong');
Error: 'wrong' is a malformed format.