跳转到主要内容

数据转换中的常见问题

ClickHouse 通常采用与 C++ 程序相同的行为 to<type> 函数和 cast 在某些情况下的行为有所不同,例如对于 LowCardinalitycast 会移除 LowCardinality 特性,而 to<type> 函数不会。对于 Nullable 也是如此。此行为与 SQL 标准不兼容,但可以通过 cast_keep_nullable 设置进行更改。
请注意,如果将某种数据类型的值转换为更小的数据类型 (例如从 Int64 转为 Int32) ,或者在 不兼容的数据类型之间进行转换 (例如从 String 转为 Int) ,可能会导致数据丢失。请务必仔细检查结果是否符合预期。
示例:

toString 函数说明

toString 函数家族支持在数字、字符串 (但不包括定长字符串) 、日期和日期时间之间进行转换。 所有这些函数都只接受一个参数。
  • 在转换为字符串或从字符串转换时,值会按照与 TabSeparated 格式 (以及几乎所有其他文本格式) 相同的规则进行格式化或解析。如果字符串无法解析,则会抛出异常,并取消请求。
  • 在将日期转换为数字或反向转换时,日期对应自 Unix 纪元开始以来的天数。
  • 在将日期时间转换为数字或反向转换时,日期时间对应自 Unix 纪元开始以来的秒数。
  • DateTime 参数的 toString 函数可以接受第二个 String 参数,该参数包含时区名称,例如:Europe/Amsterdam。在这种情况下,时间会按照指定的时区进行格式化。

关于 toDate/toDateTime 函数的说明

toDate/toDateTime 函数的日期和日期时间格式定义如下:
例外情况是:如果将 UInt32、Int32、UInt64 或 Int64 数值类型转换为 Date,且该数值大于或等于 65536,则会将其解释为 Unix 时间戳 (而不是天数) ,并向下舍入为日期。 这样就支持了常见的 toDate(unix_timestamp) 写法;否则这会报错,并且必须写成更繁琐的 toDate(toDateTime(unix_timestamp)) 日期与日期时间之间的转换会以自然的方式进行:添加空时间部分,或去掉时间部分。 数值类型之间的转换遵循与 C++ 中不同数值类型之间赋值相同的规则。 示例
Query
Response
另请参见 toUnixTimestamp 函数。

CAST

Introduced in:v1.1.0 将一个值转换为指定的数据类型。 与 reinterpret 函数不同,CAST 会尝试在目标类型中得到相同的值。 如果无法实现,则会引发异常。 Syntax
参数
  • x — 任意类型的值。Any
  • T — 目标数据类型。String
返回值 返回转换为目标数据类型后的值。Any 示例 基本用法
Query
Response
使用 AS 语法
Query
Response
使用 :: 语法
Query
Response

DATE

引入于:v21.2.0 将参数转换为 Date 数据类型。这是 toDate 的 MySQL 兼容别名,行为与 toDate 相同。 语法
参数 返回值 返回 Date 值。Date 示例 基本用法
Query
Response

accurateCast

引入版本:v1.1.0 将一个值转换为指定的数据类型。与 CAST 不同,accurateCast 会执行更严格的类型检查;如果转换会导致数据精度丢失,或无法进行转换,则会抛出异常。 与常规的 CAST 相比,该函数更安全,因为它可以防止精度丢失和无效转换。 语法
参数
  • x — 要转换的值。Any
  • T — 目标数据类型的名称。String
返回值 返回转换为目标数据类型后的值。Any 示例 转换成功
Query
Response
字符串转为数字
Query
Response

accurateCastOrDefault

引入版本:v21.1.0 将值转换为指定的数据类型。 与 accurateCast 类似,但如果无法进行精确转换,则返回默认值,而不是抛出异常。 如果将默认值作为第二个参数传入,则该值必须属于目标类型。 如果未提供默认值,则使用目标类型的默认值。 语法
参数
  • x — 要转换的值。Any
  • T — 目标数据类型名称。const String
  • default_value — 可选。如果转换失败,返回此默认值。Any
返回值 返回转换后的目标数据类型值;如果无法转换,则返回默认值。Any 示例 转换成功
Query
Response
转换失败时使用显式默认值
Query
Response
使用隐式默认值的转换失败
Query
Response

accurateCastOrNull

引入版本:v1.1.0 将值转换为指定的数据类型。 与 accurateCast 类似,但如果无法精确完成转换,则返回 NULL,而不是抛出异常。 此函数结合了 accurateCast 的安全性以及更平稳的错误处理方式。 语法
参数
  • x — 要转换的值。Any
  • T — 目标数据类型名称。String
返回值 返回转换为目标数据类型后的值;如果无法转换,则返回 NULLAny 示例 转换成功
Query
Response
转换失败则返回 NULL
Query
Response

formatRow

引入版本:v20.7.0 通过指定格式将任意表达式转换为字符串。
如果格式包含前缀/后缀,它们会写入每一行。 此函数仅支持基于行的格式。
语法
参数
  • format — 文本格式,例如 CSV、TSV。String
  • x, y, ... — 表达式。Any
返回值 格式化后的字符串。 (对于文本格式,通常会以换行符结尾。) String 示例 基本用法
Query
Response
使用自定义格式
Query
Response

formatRowNoNewline

引入版本:v20.7.0 formatRow 相同,但会去掉每行末尾的换行符。 通过指定的格式将任意表达式转换为字符串,但会移除结果末尾的所有换行符。 语法
参数
  • format — 文本格式,例如 CSV、TSV。String
  • x, y, ... — 表达式。Any
返回值 返回去除了换行符的格式化字符串。String 示例 基本用法
Query
Response

fromUnixTimestamp64Micro

引入于:v20.5.0 将以微秒为单位的 Unix 时间戳转换为具有微秒精度的 DateTime64 值。 输入值会被视为具有微秒精度的 Unix 时间戳 (即自 1970-01-01 00:00:00 UTC 起经过的微秒数) 。 语法
参数
  • value — 以微秒为单位的 Unix 时间戳。Int64
  • timezone — 可选。用于返回值的时区。String
返回值 返回具有微秒精度的 DateTime64 值。DateTime64(6) 示例 使用示例
Query
Response

fromUnixTimestamp64Milli

引入版本:v20.5.0 将以毫秒为单位的 Unix 时间戳转换为具有毫秒精度的 DateTime64 值。 输入值会被视为毫秒精度的 Unix 时间戳 (即自 1970-01-01 00:00:00 UTC 起经过的毫秒数) 。 语法
参数
  • value — 以毫秒为单位的 Unix 时间戳。Int64
  • timezone — 可选。用于返回值的时区。String
返回值 具有毫秒精度的 DateTime64 值。DateTime64(3) 示例 用法示例
Query
Response

fromUnixTimestamp64Nano

引入版本:v20.5.0 将纳秒级 Unix 时间戳转换为具有纳秒精度的 DateTime64 值。 输入值会被视为纳秒精度的 Unix 时间戳 (即自 1970-01-01 00:00:00 UTC 以来的纳秒数) 。
请注意,输入值会被视为 UTC 时间戳,而不是按输入值自身的时区来处理。
语法
参数
  • value — 以纳秒为单位的 Unix 时间戳。Int64
  • timezone — 可选。返回值使用的时区。String
返回值 返回具有纳秒精度的 DateTime64 值。DateTime64(9) 示例 用法示例
Query
Response

fromUnixTimestamp64Second

引入版本:v24.12.0 将以秒为单位的 Unix 时间戳转换为秒精度的 DateTime64 值。 输入值会被视为秒精度的 Unix 时间戳 (自 1970-01-01 00:00:00 UTC 起经过的秒数) 。 语法
参数
  • value — 以秒为单位的 Unix 时间戳。Int64
  • timezone — 可选。返回值使用的时区。String
返回值 返回一个具有秒级精度的 DateTime64 值。DateTime64(0) 示例 用法示例
Query
Response

parseDateTime

引入版本:v23.3.0 根据 MySQL 日期格式字符串解析日期时间字符串。 此函数是 formatDateTime 的逆函数。 它使用格式 String 解析 String 参数,并返回 DateTime 类型。 语法
别名: TO_UNIXTIME 参数
  • time_string — 要解析为 DateTime 的字符串。String
  • format — 用于指定如何解析 time_string 的格式字符串。String
  • timezone — 可选。时区。String
返回值 根据 MySQL 风格的格式字符串,从输入字符串解析出的 DateTime。DateTime 示例 使用示例
Query
Response

parseDateTime32BestEffort

Introduced in: v20.9.0 将日期和时间的字符串表示形式转换为 DateTime 数据类型。 该函数可以解析 ISO 8601RFC 1123 - 5.2.14 RFC-822 Date and Time Specification、ClickHouse 以及其他一些日期和时间格式。 语法
参数
  • time_string — 包含待转换日期和时间的 String。String
  • time_zone — 可选。解析 time_string 时所依据的时区。String
返回值 time_stringDateTime 类型返回。DateTime 示例 使用示例
Query
Response
带时区
Query
Response
Unix 时间戳
Query
Response

parseDateTime32BestEffortOrNull

引入版本:v20.9.0 parseDateTime32BestEffort 相同,但在遇到无法处理的日期格式时会返回 NULL 语法
参数
  • time_string — 包含要转换的日期和时间的 String。String
  • time_zone — 可选。解析 time_string 时使用的时区。String
返回值 返回从字符串中解析出的 DateTime 对象;如果解析失败,则返回 NULLDateTime 示例 使用示例
Query
Response

parseDateTime32BestEffortOrZero

引入版本:v20.9.0 parseDateTime32BestEffort 相同,不同之处在于,当遇到无法处理的日期格式时,它会返回零日期或零日期时间。 语法
参数
  • time_string — 包含待转换日期和时间的 String。String
  • time_zone — 可选。解析 time_string 时所依据的时区。String
返回值 返回从字符串解析出的 DateTime 对象;如果解析失败,则返回零日期 (1970-01-01 00:00:00) 。DateTime 示例 使用示例
Query
Response

parseDateTime64

引入版本:v24.11.0 按照 MySQL 日期格式字符串,解析带有子秒级精度的日期时间字符串。 对于 DateTime64,此函数是 formatDateTime 的逆操作。 它使用 格式 String 解析一个 String 参数。返回 DateTime64 类型,可表示 1900 年到 2299 年之间、具有子秒级精度的日期时间值。 语法
参数
  • time_string — 将被解析为 DateTime64 的 String。String
  • format — 用于指定如何解析 time_string 的格式字符串。String
  • timezone — 可选。时区。String
返回值 返回根据 MySQL 风格的格式字符串从输入字符串解析得到的 DateTime64。DateTime64 示例 用法示例
Query
Response

parseDateTime64BestEffort

在 v20.1.0 中引入 parseDateTimeBestEffort 函数相同,但还支持解析毫秒和微秒,并返回 DateTime64 数据类型。 语法
参数
  • time_string — 包含待转换日期或日期时间的 String。 String
  • precision — 可选。所需精度。3 表示毫秒,6 表示微秒。默认值:3UInt8
  • time_zone — 可选。时区。函数会根据该时区解析 time_stringString
返回值 返回转换为 DateTime64 数据类型的 time_stringDateTime64 示例 用法示例
Query
Response

parseDateTime64BestEffortOrNull

引入版本:v20.1.0 parseDateTime64BestEffort 相同,不同之处在于,遇到无法处理的日期格式时会返回 NULL 语法
参数
  • time_string — 包含要转换的日期或日期时间的 String。String
  • precision — 可选。所需精度。3 表示毫秒,6 表示微秒。默认值:3UInt8
  • time_zone — 可选。时区。函数会根据该时区解析 time_stringString
返回值 返回转换后的 DateTime64 类型 time_string;如果输入无法解析,则返回 NULLDateTime64NULL 示例 用法示例
Query
Response

parseDateTime64BestEffortOrZero

引入版本:v20.1.0 parseDateTime64BestEffort 相同,不同之处在于,当遇到无法处理的日期格式时,它会返回零日期或零日期时间。 语法
参数
  • time_string — 包含要转换的日期或日期时间的 String。String
  • precision — 可选。所需精度。3 表示毫秒,6 表示微秒。默认值:3UInt8
  • time_zone — 可选。时区。函数会按照该时区解析 time_stringString
返回值 返回转换后的 DateTime64 类型 time_string;如果输入无法解析,则返回零日期/日期时间 (1970-01-01 00:00:00.000) 。DateTime64 示例 使用示例
Query
Response

parseDateTime64BestEffortUS

引入版本:v22.8.0 parseDateTime64BestEffort 相同,但在日期格式存在歧义时,此函数会优先采用美国日期格式 (MM/DD/YYYY 等) 。 语法
参数
  • time_string — 包含要转换的日期或日期时间的 String。String
  • precision — 可选。所需精度。3 表示毫秒,6 表示微秒。默认值:3UInt8
  • time_zone — 可选。时区。函数会根据该时区解析 time_stringString
返回值 返回将 time_string 转换为 DateTime64 后的结果;对于有歧义的情况,优先按美国日期格式解析。DateTime64 示例 使用示例
Query
Response

parseDateTime64BestEffortUSOrNull

引入版本:v22.8.0 parseDateTime64BestEffort 相同,不同之处在于:当日期格式存在歧义时,此函数会优先采用美国日期格式 (MM/DD/YYYY 等) ;当遇到无法处理的日期格式时,则返回 NULL 语法
参数
  • time_string — 包含要转换的日期或日期时间的 String。(String)
  • precision — 可选。所需精度。3 表示毫秒,6 表示微秒。默认值:3。(UInt8)
  • time_zone — 可选。时区。函数会根据该时区解析 time_string。(String)
返回值 返回采用美国日期格式优先规则解析后转换得到的 DateTime64 类型值;如果输入无法解析,则返回 NULL。(DateTime64NULL) 示例 使用示例
Query
Response

parseDateTime64BestEffortUSOrZero

引入版本:v22.8.0 parseDateTime64BestEffort 相同,不同之处在于,此函数在存在歧义时会优先使用美国日期格式 (MM/DD/YYYY 等) ,并且在遇到无法处理的日期格式时会返回零日期或零日期时间。 语法
参数
  • time_string — 包含要转换的日期或日期时间的 String。String
  • precision — 可选。所需精度。3 表示毫秒,6 表示微秒。默认值:3UInt8
  • time_zone — 可选。时区。该函数会按此时区解析 time_stringString
返回值 返回按美国日期格式优先规则转换后的 time_stringDateTime64 值;如果输入无法解析,则返回零日期/日期时间 (1970-01-01 00:00:00.000) 。DateTime64 示例 使用示例
Query
Response

parseDateTime64InJodaSyntax

引入版本:v24.10.0 根据 Joda 日期格式字符串,解析具有子秒级精度的日期和时间字符串。 对于 DateTime64,此函数是 formatDateTimeInJodaSyntax 的逆操作。 它使用 Joda 风格的格式 String 解析一个 String 类型的参数。返回 DateTime64 类型,可表示 1900 年至 2299 年间且具有子秒级精度的日期和时间。 有关格式模式,请参阅 Joda Time documentation 语法
参数
  • time_string — 要解析为 DateTime64 的字符串。String
  • format — Joda 语法格式字符串,用于指定如何解析 time_string。String
  • timezone — 可选。时区。String
返回值 返回根据 Joda 风格格式字符串从输入字符串解析出的 DateTime64。DateTime64 示例 使用示例
Query
Response

parseDateTime64InJodaSyntaxOrNull

Introduced in: v24.10.0 parseDateTime64InJodaSyntax 相同,但遇到无法解析的日期格式时会返回 NULL Syntax
参数
  • time_string — 要解析为 DateTime64 的字符串。String
  • format — 采用 Joda 语法的格式字符串,用于指定如何解析 time_string。String
  • timezone — 可选。时区。String
返回值 返回从输入字符串解析出的 DateTime64;如果解析失败,则返回 NULL。Nullable(DateTime64) 示例 使用示例
Query
Response

parseDateTime64InJodaSyntaxOrZero

引入版本:v24.10.0 parseDateTime64InJodaSyntax 相同,但在遇到无法解析的日期格式时会返回零日期。 语法
参数
  • time_string — 要解析为 DateTime64 的字符串。String
  • format — 采用 Joda 语法的格式字符串,用于指定如何解析 time_string。String
  • timezone — 可选。时区。String
返回值 返回从输入字符串解析出的 DateTime64;如果解析失败,则返回零值 DateTime64。DateTime64 示例 使用示例
Query
Response

parseDateTime64OrNull

引入于:v24.11.0 parseDateTime64 相同,但遇到无法解析的日期格式时会返回 NULL 语法
参数
  • time_string — 将被解析为 DateTime64 的字符串。String
  • format — 指定 time_string 解析方式的格式字符串。String
  • timezone — 可选。时区。String
返回值 返回从输入字符串解析得到的 DateTime64;如果解析失败,则返回 NULL。Nullable(DateTime64) 示例 用法示例
Query
Response

parseDateTime64OrZero

引入版本:v24.11.0 parseDateTime64 相同,但遇到无法解析的日期格式时会返回零日期。 语法
参数
  • time_string — 要解析为 DateTime64 的字符串。String
  • format — 指定解析 time_string 方式的格式字符串。String
  • timezone — 可选。时区。String
返回值 返回从输入字符串解析得到的 DateTime64;如果解析失败,则返回零值 DateTime64。DateTime64 示例 用法示例
Query
Response

parseDateTimeBestEffort

版本引入:v1.1.0 将 String 字符串表示形式中的日期和时间转换为 DateTime 数据类型。 该函数可解析 ISO 8601RFC 1123 - 5.2.14 RFC-822 日期和时间规范、ClickHouse 格式以及其他一些日期和时间格式。 支持的非标准格式:
  • 包含 9..10 位 Unix 时间戳 的字符串。
  • 包含日期和时间部分的字符串:YYYYMMDDhhmmssDD/MM/YYYY hh:mm:ssDD-MM-YY hh:mmYYYY-MM-DD hh:mm:ss 等。
  • 包含日期但不含时间部分的字符串:YYYYYYYYMMYYYY*MMDD/MM/YYYYDD-MM-YY 等。
  • 包含日期和时间的字符串:DDDD hhDD hh:mm。在这种情况下,MM 会替换为 01
  • 包含日期、时间及时区偏移信息的字符串:YYYY-MM-DD hh:mm:ss ±h:mm 等。
  • syslog 时间戳:Mmm dd hh:mm:ss。例如,Jun 9 14:20:32
对于所有带分隔符的格式,该函数都可以解析用月份全称或月份名前三个字母表示的月份名称。 如果未指定年份,则默认为当前年份。 语法
参数
  • time_string — 包含要转换的日期和时间的 String。String
  • time_zone — 可选。解析 time_string 时使用的时区。String
返回值 返回 DateTime 类型的 time_stringDateTime 示例 用法示例
Query
Response
带有时区
Query
Response
Unix 时间戳
Query
Response

parseDateTimeBestEffortOrNull

引入版本:v1.1.0 parseDateTimeBestEffort 相同,不同之处在于当遇到无法处理的日期格式时,它会返回 NULL。 该函数可解析 ISO 8601RFC 1123 - 5.2.14 RFC-822 日期和时间规范、ClickHouse 的日期和时间格式以及其他一些格式。 支持的非标准格式:
  • 包含 9 到 10 位 Unix 时间戳的字符串。
  • 包含日期和时间部分的字符串:YYYYMMDDhhmmssDD/MM/YYYY hh:mm:ssDD-MM-YY hh:mmYYYY-MM-DD hh:mm:ss 等。
  • 包含日期但不包含时间部分的字符串:YYYYYYYYMMYYYY*MMDD/MM/YYYYDD-MM-YY 等。
  • 包含日和时间的字符串:DDDD hhDD hh:mm。在这种情况下,MM 会被替换为 01
  • 包含日期、时间和时区偏移信息的字符串:YYYY-MM-DD hh:mm:ss ±h:mm 等。
  • syslog 时间戳:Mmm dd hh:mm:ss。例如,Jun 9 14:20:32
对于所有带分隔符的格式,该函数都可以解析以月份全称或月份名前三个字母表示的月份名称。 如果未指定年份,则默认为当前年份。 语法
参数
  • time_string — 包含待转换日期和时间的 String。String
  • time_zone — 可选。用于解析 time_string 的时区。String
返回值 time_string 会以 DateTime 形式返回;如果输入无法解析,则返回 NULLDateTimeNULL 示例 使用示例
Query
Response

parseDateTimeBestEffortOrZero

引入版本:v1.1.0 parseDateTimeBestEffort 相同,不同之处在于,当遇到无法处理的日期格式时,它会返回零日期或零日期时间。 该函数可解析 ISO 8601RFC 1123 - 5.2.14 RFC-822 日期和时间规范、ClickHouse 格式以及其他一些日期和时间格式。 支持的非标准格式:
  • 包含 9 到 10 位 Unix 时间戳的字符串。
  • 包含日期和时间部分的字符串:YYYYMMDDhhmmssDD/MM/YYYY hh:mm:ssDD-MM-YY hh:mmYYYY-MM-DD hh:mm:ss 等。
  • 包含日期但不包含时间部分的字符串:YYYYYYYYMMYYYY*MMDD/MM/YYYYDD-MM-YY 等。
  • 包含日期和时间的字符串:DDDD hhDD hh:mm。在这种情况下,MM 会被替换为 01
  • 包含日期、时间和时区偏移信息的字符串:YYYY-MM-DD hh:mm:ss ±h:mm 等。
  • syslog 时间戳:Mmm dd hh:mm:ss。例如,Jun 9 14:20:32
对于所有带分隔符的格式,该函数都可以解析用月份全称或月份名前三个字母表示的月份名称。 如果未指定年份,则默认为当前年份。 语法
参数
  • time_string — 包含要转换的日期和时间的 String。String
  • time_zone — 可选。解析 time_string 时所依据的时区。String
返回值 time_string 作为 DateTime 返回;如果输入无法解析,则返回零日期/日期时间 (1970-01-011970-01-01 00:00:00) 。DateTime 示例 使用示例
Query
Response

parseDateTimeBestEffortUS

引入于:v1.1.0 对于 ISO 日期格式 (例如 YYYY-MM-DD hh:mm:ss) 以及其他能够明确识别出月份和日期组件的日期格式 (例如 YYYYMMDDhhmmssYYYY-MMDD hhYYYY-MM-DD hh:mm:ss ±h:mm) ,此函数的行为与 parseDateTimeBestEffort 相同。 如果无法明确识别月份和日期组件,例如 MM/DD/YYYYMM-DD-YYYYMM-DD-YY,则会优先按美国日期格式解析,而不是按 DD/MM/YYYYDD-MM-YYYYDD-MM-YY 解析。 不过,上一条有一个例外:如果月份值大于 12 且小于等于 31,此函数会回退到 parseDateTimeBestEffort 的行为,例如 15/08/2020 会被解析为 2020-08-15 语法
参数
  • time_string — 包含要转换的日期和时间的 String。String
  • time_zone — 可选。解析 time_string 时使用的时区。String
返回值 返回将 time_string 解析为 DateTime 的结果;对于有歧义的情况,优先按照美国日期格式进行解析。DateTime 示例 使用示例
Query
Response

parseDateTimeBestEffortUSOrNull

引入版本:v1.1.0 parseDateTimeBestEffortUS 函数相同,不同之处在于:当遇到无法处理的日期格式时,它会返回 NULL 对于 ISO 日期格式,此函数的行为与 parseDateTimeBestEffort 相同;但在存在歧义的情况下,会优先采用美国日期格式,并在解析出错时返回 NULL 语法
参数
  • time_string — 包含待转换日期和时间的 String。String
  • time_zone — 可选。解析 time_string 时所依据的时区。String
返回值 time_string 按照美国日期格式优先级解析为 DateTime 并返回;如果输入无法解析,则返回 NULLDateTimeNULL 示例 用法示例
Query
Response

parseDateTimeBestEffortUSOrZero

引入版本:v1.1.0 parseDateTimeBestEffortUS 函数相同,但当遇到无法处理的日期格式时,它会返回零日期 (1970-01-01) 或零日期时间 (1970-01-01 00:00:00) 。 对于 ISO 日期格式,此函数的行为与 parseDateTimeBestEffort 相同;但在存在歧义的情况下,会优先采用美国日期格式,并在解析错误时返回零值。 语法
参数
  • time_string — 包含要转换的日期和时间的 String。String
  • time_zone — 可选。按此时区解析 time_stringString
返回值 以美国日期格式优先的方式将 time_string 解析为 DateTime 并返回;如果输入无法解析,则返回零日期/日期时间 (1970-01-011970-01-01 00:00:00) 。DateTime 示例 使用示例
Query
Response

parseDateTimeInJodaSyntax

引入版本:v23.3.0 根据 Joda 日期格式字符串解析日期时间字符串。 此函数是 formatDateTimeInJodaSyntax 的逆操作。 它使用 Joda 风格的格式 String 解析 String 参数,并返回 DateTime 类型。 有关格式模式,请参阅 Joda Time 文档 语法
参数
  • time_string — 将被解析为 DateTime 的 String。String
  • format — Joda 语法格式字符串,用于指定如何解析 time_string。String
  • timezone — 可选。时区。String
返回值 根据 Joda 风格的格式字符串,从输入字符串解析得到的 DateTime。DateTime 示例 使用示例
Query
Response

parseDateTimeInJodaSyntaxOrNull

引入版本:v23.3.0 parseDateTimeInJodaSyntax 相同,但在遇到无法解析的日期格式时返回 NULL 语法
参数
  • time_string — 要被解析为 DateTime 的字符串。String
  • format — 采用 Joda 语法的格式字符串,用于指定如何解析 time_string。String
  • timezone — 可选。时区。String
返回值 返回从输入字符串中解析得到的 DateTime;如果解析失败,则返回 NULL。Nullable(DateTime) 示例 使用示例
Query
Response

parseDateTimeInJodaSyntaxOrZero

引入版本:v23.3.0 parseDateTimeInJodaSyntax 相同,但遇到无法解析的日期格式时会返回零日期。 语法
参数
  • time_string — 要解析为 DateTime 的字符串。String
  • format — 采用 Joda 语法的格式字符串,用于指定如何解析 time_string。String
  • timezone — 可选。时区。String
返回值 返回从输入字符串解析得到的 DateTime;如果解析失败,则返回零 DateTime。DateTime 示例 使用示例
Query
Response

parseDateTimeOrNull

版本引入:v23.3.0 parseDateTime 相同,但遇到无法解析的日期格式时会返回 NULL 语法
别名: str_to_date 参数
  • time_string — 要解析为 DateTime 的字符串。String
  • format — 指定如何解析 time_string 的格式字符串。String
  • timezone — 可选。时区。String
返回值 返回从输入字符串解析得到的 DateTime;如果解析失败,则返回 NULL。Nullable(DateTime) 示例 使用示例
Query
Response

parseDateTimeOrZero

在以下版本中引入:v23.3.0 parseDateTime 相同,但在遇到无法解析的日期格式时会返回零日期。 语法
参数
  • time_string — 要解析为 DateTime 的字符串。String
  • format — 指定 time_string 解析方式的格式字符串。String
  • timezone — 可选。时区。String
返回值 返回从输入字符串解析得到的 DateTime;如果解析失败,则返回零 DateTime。DateTime 示例 用法示例
Query
Response

reinterpret

引入版本:v1.1.0 对给定的值 x,使用其在内存中的同一源字节序列,并将其重新解释为目标类型。 语法
参数
  • x — 任意类型。Any
  • type — 目标类型。若为数组,则其元素类型必须为定长类型。String
返回值 目标类型的值。Any 示例 用法示例
Query
Response
Array 示例
Query
Response

reinterpretAsDate

引入版本:v1.1.0 将输入值重新解释为 Date 值 (假设采用小端字节序) ,即自 Unix 纪元 1970-01-01 起经过的天数 语法
参数 返回值 日期。Date 示例 使用示例
Query
Response

reinterpretAsDateTime

引入版本:v1.1.0 将输入值重新解释为 DateTime 值 (按小端字节序) ,即自 Unix 纪元 1970-01-01 开始以来的天数 语法
参数 返回值 日期和时间。DateTime 示例 用法示例
Query
Response

reinterpretAsFixedString

引入版本:v1.1.0 将输入值重新解释为定长字符串 (假定采用小端字节序) 。 末尾的 null 字节会被忽略。例如,对于 UInt32 值 255,该函数会返回一个仅包含单个字符的字符串。 语法
参数 返回值 包含表示 x 的字节的定长字符串。FixedString 示例 使用示例
Query
Response

reinterpretAsFloat32

Introduced in: v1.1.0 将输入值重新解释为 Float32 类型的值。 与 CAST 不同,此函数不会尝试保留原始值——如果目标类型无法表示输入类型,输出结果则未定义。 语法
参数 返回值 返回重新解释后的值 xFloat32 示例 使用示例
Query
Response

reinterpretAsFloat64

在以下版本中引入:v1.1.0 将输入值重新解释为 Float64 类型的值。 与 CAST 不同,此函数不会尝试保留原始值;如果目标类型无法表示输入类型,则输出未定义。 语法
参数 返回值 返回重新解释后的值 xFloat64 示例 用法示例
Query
Response

reinterpretAsInt128

首次引入于:v1.1.0 将输入值重新解释为 Int128 类型的值。 与 CAST 不同,此函数不会尝试保留原始值——如果目标类型无法表示输入类型,输出结果将是未定义的。 语法
参数 返回值 返回重新解释后的值 xInt128 示例 用法示例
Query
Response

reinterpretAsInt16

首次引入于:v1.1.0 将输入值重新解释为 Int16 类型的值。 与 CAST 不同,此函数不会尝试保留原始值——如果目标类型无法表示输入类型,则输出结果未定义。 语法
参数 返回值 返回重新解释后的值 xInt16 示例 使用示例
Query
Response

reinterpretAsInt256

引入版本:v1.1.0 将输入值重新解释为 Int256 类型的值。 与 CAST 不同,此函数不会尝试保留原始值——如果目标类型无法表示输入类型,则输出结果未定义。 语法
参数 返回值 返回重新解释后的值 xInt256 示例 使用示例
Query
Response

reinterpretAsInt32

引入版本:v1.1.0 将输入值重新解释为 Int32 类型的值。 与 CAST 不同,此函数不会尝试保留原始值;如果目标类型无法表示输入类型,则输出结果未定义。 语法
参数 返回值 返回重新解释后的值 xInt32 示例 用法示例
Query
Response

reinterpretAsInt64

引入版本:v1.1.0 将输入值重新解释为 Int64 类型的值。 与 CAST 不同,此函数不会尝试保留原始值;如果目标类型无法表示输入类型,则输出结果未定义。 语法
参数 返回值 返回重新解释后的值 xInt64 示例 使用示例
Query
Response

reinterpretAsInt8

引入版本:v1.1.0 将输入值重新解释为 Int8 类型的值。 与 CAST 不同,此函数不会尝试保留原始值——如果目标类型无法表示该输入类型,则输出结果未定义。 语法
参数 返回值 返回重新解释后的值 xInt8 示例 用法示例
Query
Response

reinterpretAsString

引入版本:v1.1.0 将输入值重新解释为字符串 (假设采用小端字节序) 。 末尾的空字节会被忽略。例如,对于值为 255 的 UInt32,该函数会返回一个仅包含单个字符的字符串。 语法
参数 返回值 包含表示 x 的字节序列的字符串。String 示例 用法示例
Query
Response

reinterpretAsUInt128

首次引入于:v1.1.0 将输入值重新解释为 UInt128 类型的值。 与 CAST 不同,此函数不会尝试保留原始值——如果目标类型无法表示该输入类型,则输出结果未定义。 语法
参数 返回值 返回重新解释后的值 xUInt128 示例 使用示例
Query
Response

reinterpretAsUInt16

引入版本:v1.1.0 将输入值重新解释为 UInt16 类型的值。 与 CAST 不同,此函数不会尝试保留原始值;如果目标类型无法表示输入类型,则输出结果未定义。 语法
参数 返回值 返回重新解释后的值 xUInt16 示例 用法示例
Query
Response

reinterpretAsUInt256

Introduced in: v1.1.0 将输入值重新解释为 UInt256 类型的值。 与 CAST 不同,此函数不会尝试保留原始值;如果目标类型无法表示输入类型,则输出结果未定义。 Syntax
参数 返回值 返回重新解释后的值 xUInt256 示例 用法示例
Query
Response

reinterpretAsUInt32

首次引入版本:v1.1.0 将输入值重新解释为 UInt32 类型的值。 与 CAST 不同,此函数不会尝试保留原始值——如果目标类型无法表示输入类型,则输出结果是未定义的。 语法
参数 返回值 返回重新解释后的 x 值。UInt32 示例 使用示例
Query
Response

reinterpretAsUInt64

首次引入版本:v1.1.0 将输入值重新解释为 UInt64 类型的值。 与 CAST 不同,此函数不会尝试保留原始值——如果目标类型无法表示输入类型,则输出未定义。 语法
参数 返回值 返回 x 重新解释后的值。UInt64 示例 使用示例
Query
Response

reinterpretAsUInt8

Introduced in:v1.1.0 将输入值重新解释为 UInt8 类型的值。 与 CAST 不同,该函数不会尝试保留原始值——如果目标类型无法表示输入类型,则输出结果未定义。 Syntax
参数 返回值 返回重新解释后的值 xUInt8 示例 用法示例
Query
Response

reinterpretAsUUID

首次引入版本:v1.1.0 接受一个 16 字节字符串,并将其中每个 8 字节半段按 little-endian 字节序解释后返回一个 UUID。如果字符串长度不足,函数会像在末尾补足所需数量的空字节一样处理;如果字符串长度超过 16 字节,则会忽略末尾多出的字节。 语法
参数 返回值 UUID 类型的值。UUID 示例 字符串转换为 UUID
Query
Response

toBFloat16

引入版本:v1.1.0 将输入值转换为 BFloat16 类型的值。 如果发生错误,会抛出异常。 另请参见: 语法
参数
  • expr — 返回数值或数值字符串表示形式的表达式。Expression
返回值 返回一个 16 位 brain-float 类型的值。BFloat16 示例 使用示例
Query
Response

toBFloat16OrNull

引入于:v1.1.0 将 String 输入值转换为 BFloat16 类型的值。 如果字符串不表示浮点值,则该函数返回 NULL。 支持的参数:
  • 数值的字符串表示形式。
不支持的参数 (返回 NULL) :
  • 二进制和十六进制值的字符串表示形式。
  • 数值。
该函数在从字符串表示形式转换时,允许静默丢失精度。
另请参见: 语法
参数
  • x — 数字的 String 字符串表示形式。String
返回值 返回一个 16 位 brain-float 值;否则返回 NULLBFloat16NULL 示例 用法示例
Query
Response

toBFloat16OrZero

引入版本:v1.1.0 将 String 输入值转换为 BFloat16 类型的值。 如果该字符串不表示浮点数值,则函数返回零。 支持的参数:
  • 数值的字符串表示形式。
不支持的参数 (返回 0) :
  • 二进制和十六进制值的字符串表示形式。
  • 数值。
该函数允许在从字符串表示形式转换时静默丢失精度。
另请参见: 语法
参数
  • x — 数字的 String 表示形式。String
返回值 返回一个 16 位 brain-float 值;否则返回 0BFloat16 示例 使用示例
Query
Response

toBool

Introduced in:v22.2.0 将输入值转换为 Bool 类型。 语法
参数
  • expr — 返回数值或字符串的表达式。对于字符串,可接受 ‘true’ 或 ‘false’ (不区分大小写) 。(U)Int*Float*StringExpression
返回值 根据参数的求值结果,返回 truefalseBool 示例 用法示例
Query
Response

toDate

引入版本:v1.1.0 将输入值转换为 Date 类型。 支持从 String、FixedString、DateTime 或数值类型转换。 语法
参数 返回值 返回转换后的输入值。Date 示例 将 String 转换为 Date
Query
Response
将 DateTime 转换为 Date
Query
Response
整数转换为日期
Query
Response

toDate32

引入版本:v21.9.0 将参数转换为 Date32 数据类型。 如果值超出范围,toDate32 会返回 Date32 支持的边界值。 如果参数类型为 Date,则会考虑其取值边界。 语法
参数 返回值 返回一个日历日期。Date32 示例 在取值范围内
Query
Response
超出取值范围
Query
Response

toDate32OrDefault

引入版本:v21.11.0 将参数转换为 Date32 数据类型。如果该值超出范围,toDate32OrDefault 会返回 Date32 支持的下限值。如果参数的类型为 Date,则会考虑其边界。如果接收到无效参数,则返回默认值。 语法
参数
  • expr — 返回数字或数字字符串表示形式的表达式。String(U)Int*Float*
  • default — 可选。解析失败时返回的默认值。Date32
返回值 成功时返回 Date32 类型的值;否则,如果传入了默认值则返回该默认值,未传入则返回 1900-01-01。Date32 示例 转换成功
Query
Response
转换失败
Query
Response

toDate32OrNull

引入版本:v21.9.0 将输入值转换为 Date32 类型的值;如果参数无效,则返回 NULL。 与 toDate32 相同,但在参数无效时会返回 NULL 语法
参数
  • x — 日期的字符串表示形式。String
返回值 成功时返回 Date32 值,否则返回 NULLDate32NULL 示例 用法示例
Query
Response

toDate32OrZero

引入版本:v21.9.0 将输入值转换为 Date32 类型的值;如果收到无效参数,则返回 Date32 的下界值。 与 toDate32 相同,但如果收到无效参数,则返回 Date32 的下界值。 另请参见: 语法
参数
  • x — 日期的字符串表示形式。String
返回值 成功时返回 Date32 值,否则返回 Date32 的下界值 (1900-01-01) 。Date32 示例 使用示例
Query
Response

toDateOrDefault

引入版本:v21.11.0 toDate 类似,但如果转换失败,则返回默认值:若指定了第二个参数,则返回该参数;否则返回 Date 的下界值。 语法
参数
  • expr — 返回数值或数值字符串表示形式的表达式。String(U)Int*Float*
  • default — 可选。解析失败时返回的默认值。Date
返回值 如果转换成功,则返回 Date 类型的值;否则,如果传入了默认值则返回该默认值,未传入则返回 1970-01-01。Date 示例 转换成功
Query
Response
转换失败
Query
Response

toDateOrNull

首次引入版本:v1.1.0 将输入值转换为 Date 类型的值;如果参数无效,则返回 NULL。 与 toDate 相同,但在参数无效时返回 NULL 语法
参数
  • x — 日期的字符串表示形式。String
返回值 成功时返回 Date 值,否则返回 NULLDateNULL 示例 用法示例
Query
Response

toDateOrZero

引入版本:v1.1.0 将输入值转换为 Date 类型的值;如果传入的是无效参数,则返回 Date 的下界值。 与 toDate 相同,但如果传入的是无效参数,则返回 Date 的下界值。 另请参见: 语法
参数
  • x — 日期的字符串表示形式。String
返回值 成功时返回 Date 值,否则返回 Date 的下界值 (1970-01-01) 。Date 示例 用法示例
Query
Response

toDateTime

引入于:v1.1.0 将输入值转换为 DateTime 类型。
如果 expr 是数值,则会将其解释为自 Unix 纪元开始以来的秒数 (即 Unix timestamp) 。 如果 exprString,则可能会将其解释为 Unix timestamp,或解释为日期 / 日期时间的字符串表示形式。 因此,由于存在歧义,较短数字的字符串表示形式 (最多 4 位) 会明确禁用解析。例如,字符串 '1999' 既可能表示年份 (Date / DateTime 的不完整字符串表示形式) ,也可能是 Unix timestamp。更长的数字字符串则允许解析。
语法
参数 返回值 返回日期时间。DateTime 示例 使用示例
Query
Response

toDateTime32

Introduced in: v20.9.0 将输入值转换为 DateTime 类型。 支持从 StringFixedStringDateDate32DateTime 或数值类型 ((U)Int*Float*Decimal) 转换。 与 DateTime 相比,DateTime32 的取值范围更大,支持 1900-01-012299-12-31 的日期。 Syntax
参数 返回值 返回转换后的输入值。DateTime 示例 值在范围内
Query
Response
作为指定精度的 Decimal 值
Query
Response
指定时区
Query
Response

toDateTime64

引入版本:v20.1.0 将输入值转换为 DateTime64 类型的值。 语法
参数
  • expr — 返回数值或数值字符串表示形式的表达式。Expression
  • scale — 时间粒度 (精度) :10^(-scale) 秒。UInt8
  • timezone — 可选。指定 DateTime64 对象的时区。String
返回值 返回具有子秒级精度的日历日期和时间。DateTime64 示例 值在范围内
Query
Response
作为指定精度的 Decimal
Query
Response
指定时区
Query
Response

toDateTime64OrDefault

引入版本:v21.11.0 toDateTime64 类似,此函数会将输入值转换为 DateTime64 类型的值, 但如果收到无效参数,则返回 DateTime64 的默认值 或提供的默认值。 语法
参数
  • expr — 返回数值或数值字符串表示形式的表达式。String(U)Int*Float*
  • scale — 时间粒度 (精度) :10^-precision 秒。UInt8
  • timezone — 可选。时区。String
  • default — 可选。解析失败时返回的默认值。DateTime64
返回值 成功时返回 DateTime64 类型的值;否则,如果传入了默认值则返回该默认值,若未传入则返回 1970-01-01 00:00:00.000。DateTime64 示例 成功转换
Query
Response
转换失败
Query
Response

toDateTime64OrNull

引入版本:v20.1.0 将输入值转换为 DateTime64 类型的值;如果接收到无效参数,则返回 NULL。 与 toDateTime64 相同,但如果接收到无效参数,则返回 NULL 语法
参数
  • x — 带有子秒级精度的日期时间字符串表示形式。String
返回值 如果成功,则返回 DateTime64 值;否则返回 NULLDateTime64NULL 示例 用法示例
Query
Response

toDateTime64OrZero

引入版本:v20.1.0 将输入值转换为 DateTime64 类型的值;如果接收到无效参数,则返回 DateTime64 的下界值。 与 toDateTime64 相同,但在接收到无效参数时会返回 DateTime64 的下界值。 另请参见: 语法
参数
  • x — 带有子秒级精度的日期时间字符串表示形式。String
返回值 成功时返回 DateTime64 值,否则返回 DateTime64 的下界值 (1970-01-01 00:00:00.000) 。DateTime64 示例 使用示例
Query
Response

toDateTimeOrDefault

引入版本:v21.11.0 toDateTime 类似,但如果转换失败,则返回默认值:若指定了第三个参数,则返回该参数;否则返回 DateTime 的下界值。 语法
参数
  • expr — 返回数值或数值字符串表示形式的表达式。String(U)Int*Float*
  • timezone — 可选。时区。String
  • default — 可选。解析失败时返回的默认值。DateTime
返回值 成功时返回 DateTime 类型的值;否则如果传入了默认值,则返回该默认值;若未传入,则返回 1970-01-01 00:00:00DateTime 示例 转换成功
Query
Response
转换失败
Query
Response

toDateTimeOrNull

引入版本:v1.1.0 将输入值转换为 DateTime 类型的值;如果接收到无效参数,则返回 NULL。 与 toDateTime 相同,但在接收到无效参数时会返回 NULL 语法
参数
  • x — 日期时间的字符串表示形式。String
返回值 成功时返回 DateTime 值,否则返回 NULLDateTimeNULL 示例 用法示例
Query
Response

toDateTimeOrZero

引入版本:v1.1.0 将输入值转换为 DateTime 类型的值;如果收到无效参数,则返回 DateTime 的下界值。 与 toDateTime 相同,但如果收到无效参数,则返回 DateTime 的下界值。 语法
参数
  • x — 日期时间的字符串表示形式。String
返回值 如果成功,则返回 DateTime 值;否则返回 DateTime 的下界值 (1970-01-01 00:00:00) 。DateTime 示例 使用示例
Query
Response

toDecimal128

引入版本:v18.12.0 将输入值转换为标度为 SDecimal(38, S) 类型值。 出错时会抛出异常。 支持的参数:
  • (U)Int* 类型的值或其字符串表示形式。
  • Float* 类型的值或其字符串表示形式。
不支持的参数:
  • Float* 类型的 NaNInf 值,及其字符串表示形式 (不区分大小写) 。
  • 二进制和十六进制值的字符串表示形式,例如 SELECT toDecimal128('0xc0fe', 1);
如果 expr 的值超出 Decimal128 的范围:(-1*10^(38 - S), 1*10^(38 - S)),则可能发生溢出。 小数部分中过多的位数会被截掉 (不进行舍入) 。 整数部分中过多的位数会导致异常。
转换会截掉多余的位数;处理 Float32/Float64 输入时,由于运算使用的是浮点指令,结果可能不符合预期。 例如:toDecimal128(1.15, 2) 的结果是 1.14,因为在浮点运算中,1.15 * 100 的结果是 114.99。 你可以使用 String 输入,这样运算会使用底层整数类型:toDecimal128('1.15', 2) = 1.15
语法
参数
  • expr — 返回数值或数值字符串表示形式的表达式。表达式
  • S — 取值范围为 0 到 38 的 scale 参数,用于指定数值的小数部分可以有多少位。UInt8
返回值 返回类型为 Decimal(38, S) 的值 Decimal128(S) 示例 用法示例
Query
Response

toDecimal128OrDefault

Introduced in: v21.11.0 toDecimal128 类似,此函数将输入值转换为 Decimal(38, S) 类型的值,但如果发生错误,则返回默认值。 语法
参数
  • expr — 数字的 String 字符串表示形式。String
  • S — 介于 0 到 38 之间的 scale 参数,用于指定数字的小数部分可包含的位数。UInt8
  • default — 可选。如果解析为 Decimal128(S) 类型失败,则返回此默认值。Decimal128(S)
返回值 成功时返回 Decimal(38, S) 类型的值;否则,如果传入了默认值则返回该默认值,未传入则返回 0。Decimal128(S) 示例 转换成功
Query
Response
转换失败
Query
Response

toDecimal128OrNull

引入版本:v20.1.0 将输入值转换为 Decimal(38, S) 类型的值;如果出错,则返回 NULL。 与 toDecimal128 类似,但在转换出错时返回 NULL,而不是抛出异常。 支持的参数:
  • (U)Int* 类型的值或其字符串表示形式。
  • Float* 类型的值或其字符串表示形式。
不支持的参数 (返回 NULL) :
  • Float* 值 NaNInf 及其字符串表示形式 (不区分大小写) 。
  • 二进制值和十六进制值的字符串表示形式。
  • 超出 Decimal128 取值范围的值:(-1*10^(38 - S), 1*10^(38 - S))
另请参阅: 语法
参数
  • expr — 返回数值或数值字符串表示形式的表达式。Expression
  • S — 介于 0 到 38 之间的 scale 参数,用于指定数值的小数部分可包含的位数。UInt8
返回值 成功时返回 Decimal(38, S) 值,否则返回 NULLDecimal128(S)NULL 示例 使用示例
Query
Response

toDecimal128OrZero

引入版本:v20.1.0 将输入值转换为 Decimal(38, S) 类型的值;如果出错,则返回 0。 与 toDecimal128 类似,但在转换出错时返回 0,而不是抛出异常。 支持的参数:
  • (U)Int* 类型的值或其字符串表示形式。
  • Float* 类型的值或其字符串表示形式。
不支持的参数 (返回 0) :
  • Float* 值 NaNInf,或其字符串表示形式 (不区分大小写) 。
  • 二进制值和十六进制值的字符串表示形式。
如果输入值超出 Decimal128 的范围:(-1*10^(38 - S), 1*10^(38 - S)),函数将返回 0
语法
参数
  • expr — 返回数字或数字字符串表示形式的表达式。Expression
  • S — 取值范围为 0 到 38 的 scale 参数,用于指定数字的小数部分最多可以有多少位。UInt8
返回值 成功时返回 Decimal(38, S) 值,否则返回 0Decimal128(S) 示例 基本用法
Query
Response

toDecimal256

引入版本:v20.8.0 将输入值转换为带有 S 标度的 Decimal(76, S) 类型的值。出错时会抛出异常。 支持的参数:
  • (U)Int* 类型的值或其字符串表示形式。
  • Float* 类型的值或其字符串表示形式。
不支持的参数:
  • Float* 值 NaNInf 及其字符串表示形式 (不区分大小写) 。
  • 二进制和十六进制值的字符串表示形式,例如 SELECT toDecimal256('0xc0fe', 1);
如果 expr 的值超出 Decimal256 的取值范围:(-1*10^(76 - S), 1*10^(76 - S)),则可能发生溢出。 小数部分中过多的数字会被截去 (不进行舍入) 。 整数部分位数过多将导致异常。
转换会截去多余的数字;在处理 Float32/Float64 输入时,由于运算使用浮点指令执行,结果可能不符合预期。 例如:toDecimal256(1.15, 2) 的结果为 1.14,因为在浮点运算中,1.15 * 100 的结果是 114.99。 你可以使用 String 类型的输入,这样运算会使用底层整数类型:toDecimal256('1.15', 2) = 1.15
语法
参数
  • expr — 返回数值或数值字符串表示形式的表达式。表达式
  • S — 介于 0 到 76 之间的 scale 参数,指定数值的小数部分可包含的位数。UInt8
返回值 返回一个 Decimal(76, S) 类型的值。Decimal256(S) 示例 使用示例
Query
Response

toDecimal256OrDefault

引入版本:v21.11.0 toDecimal256 类似,此函数会将输入值转换为 Decimal(76, S) 类型的值,但如果发生错误,则返回默认值。 语法
参数
  • expr — 数字的 String 表示形式。String
  • S — 介于 0 到 76 之间的 scale 参数,用于指定数字的小数部分可以有多少位。UInt8
  • default — 可选。如果解析为 Decimal256(S) 类型失败,则返回该默认值。Decimal256(S)
返回值 成功时返回 Decimal(76, S) 类型的值;否则,如果传入了默认值则返回该默认值,未传入则返回 0Decimal256(S) 示例 转换成功
Query
Response
转换失败
Query
Response

toDecimal256OrNull

引入版本:v20.8.0 将输入值转换为 Decimal(76, S) 类型的值,但如果出错则返回 NULL。 与 toDecimal256 类似,但在转换出错时返回 NULL,而不是抛出异常。 支持的参数:
  • (U)Int* 类型的值或其字符串表示形式。
  • Float* 类型的值或其字符串表示形式。
不支持的参数 (返回 NULL) :
  • Float* 类型的 NaNInf 值,或其字符串表示形式 (不区分大小写) 。
  • 二进制和十六进制值的字符串表示形式。
  • 超出 Decimal256 取值范围的值:(-1 * 10^(76 - S), 1 * 10^(76 - S))
另请参阅: 语法
参数
  • expr — 返回数值或数值字符串表示形式的表达式。Expression
  • S — 取值范围为 0 到 76 的 scale 参数,用于指定数值的小数部分最多可以有多少位。UInt8
返回值 成功时返回 Decimal(76, S) 值,否则返回 NULLDecimal256(S)NULL 示例 使用示例
Query
Response

toDecimal256OrZero

引入版本:v20.8.0 将输入值转换为 Decimal(76, S) 类型的值,但如果发生错误则返回 0。 与 toDecimal256 类似,但在转换出错时返回 0,而不是抛出异常。 支持的参数:
  • (U)Int* 类型的值或其字符串表示形式。
  • Float* 类型的值或其字符串表示形式。
不支持的参数 (返回 0) :
  • Float* 值 NaNInf,以及它们的字符串表示形式 (不区分大小写) 。
  • 二进制和十六进制值的字符串表示形式。
如果输入值超出 Decimal256 的范围:(-1*10^(76 - S), 1*10^(76 - S)),函数将返回 0
另请参阅: 语法
参数
  • expr — 返回数值或数值字符串表示形式的表达式。Expression
  • S — 介于 0 到 76 之间的 scale 参数,用于指定数值的小数部分最多可包含多少位数字。UInt8
返回值 成功时返回 Decimal(76, S) 值,否则返回 0Decimal256(S) 示例 用法示例
Query
Response

toDecimal32

引入版本:v18.12.0 将输入值转换为 Decimal(9, S) 类型、标度为 S 的值。出错时会抛出异常。 支持的参数:
  • (U)Int* 类型的值或其字符串表示形式。
  • Float* 类型的值或其字符串表示形式。
不支持的参数:
  • Float* 值 NaNInf 及其字符串表示形式 (不区分大小写) 。
  • 二进制和十六进制值的字符串表示形式,例如 SELECT toDecimal32('0xc0fe', 1);
如果 expr 的值超出 Decimal32 的范围:(-1*10^(9 - S), 1*10^(9 - S)),则可能发生溢出。 小数部分中多余的数字会被截去 (不进行四舍五入) 。 整数部分中多余的数字会导致抛出异常。
转换会截去多余的数字;处理 Float32/Float64 输入时,由于这些操作是通过浮点指令执行的,因此结果可能不符合预期。 例如:toDecimal32(1.15, 2) 的结果为 1.14,因为在浮点运算中,1.15 * 100 的结果是 114.99。 你可以改用 String 输入,这样操作将使用底层整数类型:toDecimal32('1.15', 2) = 1.15
语法
参数
  • expr — 返回数值或数值字符串表示形式的表达式。Expression
  • S — 取值范围为 0 到 9 的 scale 参数,用于指定数值的小数部分可以有多少位。UInt8
返回值 返回类型为 Decimal(9, S) 的值 Decimal32(S) 示例 使用示例
Query
Response

toDecimal32OrDefault

Introduced in:v21.11.0 toDecimal32 类似,此函数会将输入值转换为 Decimal(9, S) 类型的值,但如果发生错误,则返回默认值。 语法
参数
  • expr — 数字的 String 表示形式。String
  • S — 介于 0 到 9 之间的 scale 参数,用于指定数字的小数部分可有多少位。UInt8
  • default — 可选。如果解析为 Decimal32(S) 类型失败,则返回此默认值。Decimal32(S)
返回值 成功时返回 Decimal(9, S) 类型的值;否则,如果传入了默认值则返回该值,未传入则返回 0。Decimal32(S) 示例 转换成功
Query
Response
转换失败
Query
Response

toDecimal32OrNull

引入版本:v20.1.0 将输入值转换为 Decimal(9, S) 类型的值;如果发生错误,则返回 NULL。 与 toDecimal32 类似,但在转换出错时会返回 NULL,而不是抛出异常。 支持的参数:
  • (U)Int* 类型的值或其字符串表示形式。
  • Float* 类型的值或其字符串表示形式。
不支持的参数 (返回 NULL) :
  • Float* 类型的 NaNInf 值,或其字符串表示形式 (不区分大小写) 。
  • 二进制值和十六进制值的字符串表示形式。
  • 超出 Decimal32 取值范围的值:(-1*10^(9 - S), 1*10^(9 - S))
另请参见: 语法
参数
  • expr — 返回数值或数值字符串表示形式的表达式。Expression
  • S — 介于 0 和 9 之间的 scale 参数,指定数值的小数部分可包含的位数。UInt8
返回值 成功时返回 Decimal(9, S) 值,否则返回 NULLDecimal32(S)NULL 示例 用法示例
Query
Response

toDecimal32OrZero

引入版本:v20.1.0 将输入值转换为 Decimal(9, S) 类型的值,但如果发生错误则返回 0。 与 toDecimal32 类似,但在转换出错时会返回 0,而不是抛出异常。 支持的参数:
  • (U)Int* 类型的值或其字符串表示形式。
  • Float* 类型的值或其字符串表示形式。
不支持的参数 (返回 0) :
  • Float* 值 NaNInf,以及它们的字符串表示形式 (不区分大小写) 。
  • 二进制和十六进制值的字符串表示形式。
如果输入值超出 Decimal32 的范围:(-1*10^(9 - S), 1*10^(9 - S)),则函数返回 0
语法
参数
  • expr — 返回数值或数值的字符串表示形式的表达式。Expression
  • S — 介于 0 到 9 之间的 scale 参数,用于指定数值的小数部分可以有多少位。UInt8
返回值 成功时返回 Decimal(9, S) 值,否则返回 0Decimal32(S) 示例 用法示例
Query
Response

toDecimal64

引入版本:v18.12.0 将输入值转换为标度为 SDecimal(18, S) 类型值。 出错时会抛出异常。 支持的参数:
  • (U)Int* 类型的值或其字符串表示形式。
  • Float* 类型的值或其字符串表示形式。
不支持的参数:
  • Float* 类型的 NaNInf 值,或其字符串表示形式 (不区分大小写) 。
  • 二进制和十六进制值的字符串表示形式,例如 SELECT toDecimal64('0xc0fe', 1);
如果 expr 的值超出 Decimal64 的范围:(-1*10^(18 - S), 1*10^(18 - S)),则可能发生溢出。 小数部分中多余的数字会被截去 (不进行四舍五入) 。 整数部分中多余的数字会导致抛出异常。
转换会截去多余的数字;处理 Float32/Float64 输入时,由于这些操作是通过浮点指令执行的,结果可能会出现意外情况。 例如:toDecimal64(1.15, 2) 等于 1.14,因为在浮点运算中,1.15 * 100 的结果是 114.99。 你可以改用 String 输入,这样操作将使用底层整数类型:toDecimal64('1.15', 2) = 1.15
语法
参数
  • expr — 返回数值或数值字符串表示形式的表达式。Expression
  • S — 介于 0 到 18 之间的 scale 参数,用于指定数值的小数部分可以有多少位。UInt8
返回值 返回一个 Decimal 值。Decimal(18, S) 示例 使用示例
Query
Response

toDecimal64OrDefault

首次引入版本:v21.11.0 toDecimal64 类似,此函数会将输入值转换为 Decimal(18, S) 类型的值,但如果发生错误,则返回默认值。 语法
参数
  • expr — 数字的 String 字符串表示形式。String
  • S — 介于 0 到 18 之间的 scale 参数,用于指定数字的小数部分最多可有多少位。UInt8
  • default — 可选。如果无法解析为 Decimal64(S) 类型,则返回此默认值。Decimal64(S)
返回值 成功时返回 Decimal(18, S) 类型的值;否则,如果传入了默认值则返回默认值,未传入则返回 0Decimal64(S) 示例 成功转换
Query
Response
转换失败
Query
Response

toDecimal64OrNull

引入版本:v20.1.0 将输入值转换为 Decimal(18, S) 类型的值;如果出错,则返回 NULL。 与 toDecimal64 类似,但在转换出错时返回 NULL,而不是抛出异常。 支持的参数:
  • (U)Int* 类型的值或其字符串表示形式。
  • Float* 类型的值或其字符串表示形式。
不支持的参数 (返回 NULL) :
  • Float* 值 NaNInf 及其字符串表示形式 (不区分大小写) 。
  • 二进制和十六进制值的字符串表示形式。
  • 超出 Decimal64 取值范围的值:(-1*10^(18 - S), 1*10^(18 - S))
另请参见: 语法
参数
  • expr — 返回数值或数值字符串表示形式的表达式。Expression
  • S — 介于 0 到 18 之间的 scale 参数,用于指定数值的小数部分可包含的位数。UInt8
返回值 成功时返回 Decimal(18, S) 值,否则返回 NULLDecimal64(S)NULL 示例 使用示例
Query
Response

toDecimal64OrZero

引入版本:v20.1.0 将输入值转换为 Decimal(18, S) 类型的值,但如果发生错误则返回 0。 与 toDecimal64 类似,但在转换错误时返回 0,而不是抛出异常。 支持的参数:
  • (U)Int* 类型的值或其字符串表示形式。
  • Float* 类型的值或其字符串表示形式。
不支持的参数 (返回 0) :
  • Float* 类型的 NaNInf 值,或其字符串表示形式 (不区分大小写) 。
  • 二进制和十六进制值的字符串表示形式。
如果输入值超出 Decimal64 的范围:(-1*10^(18 - S), 1*10^(18 - S)),函数将返回 0
另请参见: 语法
参数
  • expr — 返回数值或数值字符串表示形式的表达式。Expression
  • S — 介于 0 到 18 之间的 scale 参数,用于指定数值的小数部分最多可以有多少位数字。UInt8
返回值 成功时返回 Decimal(18, S) 值,否则返回 0Decimal64(S) 示例 使用示例
Query
Response

toDecimalString

引入版本:v23.3.0 将数值转换为具有指定小数位数的 String。 该函数会将输入值四舍五入到指定的小数位数。如果输入值的小数位数少于指定值, 则结果会用 0 补齐,以达到指定的确切小数位数。 语法
参数 返回值 返回该数值的 String 表示形式,并且小数位数严格等于指定的位数。String 示例 对数值进行四舍五入并格式化
Query
Response
用零补齐
Query
Response
不同数值类型
Query
Response

toFixedString

引入版本:v1.1.0 String 参数转换为 FixedString(N) 类型 (长度固定为 N 的字符串) 。 如果字符串的字节数小于 N,则会在右侧用空字节填充。 如果字符串的字节数大于 N,则会抛出异常。 语法
参数
  • s — 要转换的 String。String
  • N — 生成的 FixedString 的长度。const UInt*
返回值 返回长度为 N 的 FixedString。FixedString(N) 示例 使用示例
Query
Response

toFloat32

引入版本:v1.1.0 将输入值转换为 Float32 类型的值。 如果出错,则会抛出异常。 支持的参数:
  • (U)Int* 类型的值。
  • (U)Int8/16/32/128/256 的字符串表示形式。
  • Float* 类型的值,包括 NaNInf
  • Float* 的字符串表示形式,包括 NaNInf (不区分大小写) 。
不支持的参数:
  • 二进制值和十六进制值的字符串表示形式,例如 SELECT toFloat32('0xc0fe');
另请参见: 语法
参数
  • expr — 返回数值或数值字符串表示形式的表达式。Expression
返回值 返回一个 32 位浮点数。Float32 示例 使用示例
Query
Response

toFloat32OrDefault

引入版本:v21.11.0 toFloat32 类似,此函数会将输入值转换为 Float32 类型的值,但如果发生错误,则返回默认值。 如果未传入 default 值,则在发生错误时返回 0 语法
参数
  • expr — 返回数值或数值字符串表示形式的表达式。String(U)Int*Float*
  • default — 可选。解析失败时返回的默认值。Float32
返回值 成功时返回 Float32 类型的值;否则,如果传入了默认值,则返回该默认值;如果未传入,则返回 0。Float32 示例 转换成功
Query
Response
转换失败
Query
Response

toFloat32OrNull

引入版本:v1.1.0 将输入值转换为 Float32 类型的值;如果出错,则返回 NULL。 与 toFloat32 类似,但在转换出错时会返回 NULL,而不是抛出异常。 支持的参数:
  • (U)Int* 类型的值。
  • (U)Int8/16/32/128/256 的字符串表示形式。
  • Float* 类型的值,包括 NaNInf
  • Float* 的字符串表示形式,包括 NaNInf (不区分大小写) 。
不支持的参数 (返回 NULL) :
  • 二进制和十六进制值的字符串表示形式,例如 SELECT toFloat32OrNull('0xc0fe');
  • 无效的字符串格式。
另请参见: 语法
参数
  • x — 数值的字符串表示形式。String
返回值 成功时返回 32 位 Float 值,否则返回 NULLFloat32NULL 示例 使用示例
Query
Response

toFloat32OrZero

首次引入版本:v1.1.0 将输入值转换为 Float32 类型的值;如果发生错误,则返回 0。 与 toFloat32 类似,但在转换出错时会返回 0,而不是抛出异常。 另请参见: 语法
参数
  • x — 数字的字符串表示形式。String
返回值 成功时返回 32 位 Float 值,否则返回 0Float32 示例 用法示例
Query
Response

toFloat64

引入版本:v1.1.0 将输入值转换为 Float64 类型的值。 发生错误时会抛出异常。 支持的参数:
  • (U)Int* 类型的值。
  • (U)Int8/16/32/128/256 的字符串表示形式。
  • Float* 类型的值,包括 NaNInf
  • Float* 类型的字符串表示形式,包括 NaNInf (不区分大小写) 。
不支持的参数:
  • 二进制和十六进制值的字符串表示形式,例如 SELECT toFloat64('0xc0fe');
另请参阅: 语法
参数
  • expr — 返回数字或数字的字符串表示形式的表达式。Expression
返回值 返回 64 位浮点值。Float64 示例 用法示例
Query
Response

toFloat64OrDefault

引入版本:v21.11.0 toFloat64 类似,此函数会将输入值转换为 Float64 类型的值,但如果发生错误,则返回默认值。 如果未传入 default 值,则发生错误时返回 0 语法
参数
  • expr — 返回数值或其字符串表示形式的表达式。String(U)Int*Float*
  • default — 可选。解析失败时返回的默认值。Float64
返回值 成功时返回 Float64 类型的值;否则,如果传入了默认值则返回该默认值,未传入则返回 0Float64 示例 转换成功
Query
Response
转换失败
Query
Response

toFloat64OrNull

引入版本:v1.1.0 将输入值转换为 Float64 类型的值;如果发生错误,则返回 NULL。 与 toFloat64 类似,但在转换出错时会返回 NULL,而不是抛出异常。 支持的参数:
  • (U)Int* 类型的值。
  • (U)Int8/16/32/128/256 的字符串表示形式。
  • Float* 类型的值,包括 NaNInf
  • Float* 类型的字符串表示形式,包括 NaNInf (不区分大小写) 。
不支持的参数 (返回 NULL) :
  • 二进制和十六进制值的字符串表示形式,例如 SELECT toFloat64OrNull('0xc0fe');
  • 无效的字符串格式。
另请参阅: 语法
参数
  • x — 数值的字符串表示形式。 String
返回值 成功时返回 64 位 Float 值,否则返回 NULLFloat64NULL 示例 使用示例
Query
Response

toFloat64OrZero

引入于:v1.1.0 将输入值转换为 Float64 类型的值;如果发生错误,则返回 0。 与 toFloat64 类似,但在转换错误时会返回 0,而不是抛出异常。 另请参见: 语法
参数
  • x — 数值的字符串表示形式。String
返回值 成功时返回 64 位浮点值,否则返回 0Float64 示例 使用示例
Query
Response

toInt128

首次引入于:v1.1.0 将输入值转换为 Int128 类型的值。 出错时会抛出异常。 该函数采用向零舍入,也就是说会截断数字的小数位。 支持的参数:
  • (U)Int* 类型的值或其字符串表示形式。
  • Float* 类型的值。
不支持的参数:
  • Float* 值的字符串表示形式,包括 NaNInf
  • 二进制和十六进制值的字符串表示形式,例如 SELECT toInt128('0xc0fe');
如果输入值无法在 Int128 的取值范围内表示,结果会发生上溢或下溢。 这不视为错误。
另请参见: 语法
参数
  • expr — 返回数值或数值字符串表示形式的表达式。Expression
返回值 返回一个 128 位整数值。Int128 示例 用法示例
Query
Response

toInt128OrDefault

引入版本:v21.11.0 toInt128 类似,该函数会将输入值转换为 Int128 类型的值,但在发生错误时会返回默认值。 如果未传入 default 值,则在发生错误时返回 0 语法
参数
  • expr — 返回数值或数值字符串表示形式的表达式。String(U)Int*Float*
  • default — 可选。解析失败时返回的默认值。Int128
返回值 成功时返回 Int128 类型的值;否则,如果传入了默认值,则返回该默认值;如果未传入,则返回 0Int128 示例 成功转换
Query
Response
转换失败
Query
Response

toInt128OrNull

Introduced in: v20.8.0 toInt128 类似,此函数会将输入值转换为 Int128 类型的值,但在出错时返回 NULL 支持的参数:
  • (U)Int* 的字符串表示形式。
不支持的参数 (返回 NULL) :
  • Float* 值的字符串表示形式,包括 NaNInf
  • 二进制和十六进制值的字符串表示形式,例如 SELECT toInt128OrNull('0xc0fe');
如果输入值超出 Int128 的可表示范围,结果会发生上溢或下溢。 这不视为错误。
See also: Syntax
参数
  • x — 数字的字符串表示形式。String
返回值 返回 Int128 类型的值;如果转换失败,则返回 NULLInt128NULL 示例 使用示例
Query
Response

toInt128OrZero

引入版本:v20.8.0 将输入值转换为 Int128 类型,但如果发生错误则返回 0。 与 toInt128 类似,但返回 0 而不是抛出异常。 另请参见: 语法
参数 返回值 返回转换后的输入值;如果转换失败,则返回 0Int128 示例 使用示例
Query
Response
转换失败时返回 0
Query
Response

toInt16

引入于:v1.1.0 将输入值转换为 Int16 类型的值。 发生错误时会抛出异常。 支持的参数:
  • (U)Int* 类型的值或其字符串表示形式。
  • Float* 类型的值。
不支持的参数:
  • Float* 类型值的字符串表示形式,包括 NaNInf
  • 二进制和十六进制值的字符串表示形式,例如 SELECT toInt16('0xc0fe');
如果输入值无法表示在 Int16 的范围内,则结果会发生上溢或下溢。 这不视为错误。 例如:SELECT toInt16(32768) == -32768;
该函数采用向零舍入,也就是说会截去数字的小数位。
另请参阅: 语法
参数
  • expr — 返回数值或该数值的字符串表示形式的表达式。Expression
返回值 返回一个 16 位整数值。Int16 示例 用法示例
Query
Response

toInt16OrDefault

引入版本:v21.11.0 toInt16 类似,此函数将输入值转换为 Int16 类型的值,但如果发生错误,则返回默认值。 如果未传入 default 值,则在发生错误时返回 0 语法
参数
  • expr — 返回数值或数值字符串表示形式的表达式。String(U)Int*Float*
  • default — 可选。解析失败时返回的默认值。Int16
返回值 成功时返回 Int16 类型的值;否则,如果传入了默认值则返回该默认值,未传入则返回 0。Int16 示例 转换成功
Query
Response
转换失败
Query
Response

toInt16OrNull

引入版本:v1.1.0 toInt16 类似,此函数将输入值转换为 Int16 类型的值,但如果发生错误,则返回 NULL 支持的参数:
  • (U)Int* 的字符串表示形式。
不支持的参数 (返回 NULL) :
  • Float* 值的字符串表示形式,包括 NaNInf
  • 二进制和十六进制值的字符串表示形式,例如 SELECT toInt16OrNull('0xc0fe');
如果输入值无法表示为 Int16 范围内的值,结果会发生上溢或下溢。 这不视为错误。
另请参见: 语法
参数
  • x — 数值的 String 字符串表示形式。String
返回值 返回 Int16 类型的值;如果转换失败,则返回 NULLInt16NULL 示例 用法示例
Query
Response

toInt16OrZero

引入版本:v1.1.0 toInt16 类似,此函数会将输入值转换为 Int16 类型的值,但在发生错误时返回 0 支持的参数:
  • (U)Int* 的字符串表示形式。
不支持的参数 (返回 0) :
  • Float* 值的字符串表示形式,包括 NaNInf
  • 二进制和十六进制值的字符串表示形式,例如 SELECT toInt16OrZero('0xc0fe');
如果输入值无法在 Int16 的取值范围内表示,则结果会发生上溢或下溢。 这不视为错误。
另请参见: 语法
参数
  • x — 数值的 String 字符串表示形式。String
返回值 返回 Int16 类型的值;如果转换失败,则返回 0Int16 示例 使用示例
Query
Response

toInt256

引入版本:v1.1.0 将输入值转换为 Int256 类型的值。 如果发生错误,会抛出异常。 该函数采用向零舍入,也就是说会截去数字的小数位。 支持的参数:
  • (U)Int* 类型的值或其字符串表示形式。
  • Float* 类型的值。
不支持的参数:
  • Float* 值的字符串表示形式,包括 NaNInf
  • 二进制和十六进制值的字符串表示形式,例如 SELECT toInt256('0xc0fe');
如果输入值超出 Int256 的表示范围,结果会发生上溢或下溢。 这不视为错误。
另请参见: 语法
参数
  • expr — 返回数字或数字的字符串表示形式的表达式。表达式
返回值 返回一个 256 位整数值。Int256 示例 使用示例
Query
Response

toInt256OrDefault

引入版本:v21.11.0 toInt256 类似,此函数会将输入值转换为 Int256 类型的值,但如果发生错误,则返回默认值。 如果未传入 default 值,则在发生错误时返回 0 语法
参数
  • expr — 返回数值或数值字符串表示形式的表达式。String(U)Int*Float*
  • default — 可选。解析失败时返回的默认值。Int256
返回值 成功时返回 Int256 类型的值;否则,如果传入了默认值,则返回该默认值;若未传入,则返回 0。Int256 示例 转换成功
Query
Response
转换失败
Query
Response

toInt256OrNull

引入版本:v20.8.0 toInt256 类似,此函数会将输入值转换为 Int256 类型的值,但如果发生错误,则返回 NULL 支持的参数:
  • (U)Int* 的字符串表示形式。
不支持的参数 (返回 NULL) :
  • Float* 值的字符串表示形式,包括 NaNInf
  • 二进制和十六进制值的字符串表示形式,例如 SELECT toInt256OrNull('0xc0fe');
如果输入值超出了 Int256 的可表示范围,则结果会发生上溢或下溢。 这不视为错误。
另请参阅: 语法
参数
  • x — 数字的 String 字符串表示形式。String
返回值 返回 Int256 类型的值;如果转换失败,则返回 NULLInt256NULL 示例 使用示例
Query
Response

toInt256OrZero

引入版本:v20.8.0 将输入值转换为 Int256 类型;如果发生错误,则返回 0。 与 toInt256 类似,但会返回 0,而不是抛出异常。 另请参见: 语法
参数 返回值 返回转换后的输入值;如果转换失败,则返回 0。(Int256) 示例 用法示例
Query
Response
转换失败时返回 0
Query
Response

toInt32

Introduced in: v1.1.0 将输入值转换为 Int32 类型的值。 出错时会抛出异常。 支持的参数:
  • (U)Int* 类型的值或其字符串表示形式。
  • Float* 类型的值。
不支持的参数:
  • Float* 类型值的字符串表示形式,包括 NaNInf
  • 二进制和十六进制值的字符串表示形式,例如 SELECT toInt32('0xc0fe');
如果输入值超出 Int32 的表示范围,结果会发生上溢或下溢。 这不视为错误。 例如:SELECT toInt32(2147483648) == -2147483648;
该函数采用向零舍入,即截去数字的小数位。
See also: Syntax
参数
  • expr — 返回数值或数值字符串表示形式的表达式。表达式
返回值 返回一个 32 位整数。Int32 示例 用法示例
Query
Response

toInt32OrDefault

引入版本:v21.11.0 toInt32 类似,此函数会将输入值转换为 Int32 类型的值,但如果发生错误,则返回默认值。 如果未传入 default 值,则在发生错误时返回 0 语法
参数
  • expr — 返回数值或数值字符串表示形式的表达式。String(U)Int*Float*
  • default — 可选。解析失败时返回的默认值。Int32
返回值 成功时返回 Int32 类型的值;否则,如果传入了默认值则返回该默认值,未传入则返回 0。Int32 示例 转换成功
Query
Response
转换失败
Query
Response

toInt32OrNull

引入版本:v1.1.0 toInt32 类似,此函数会将输入值转换为 Int32 类型的值,但如果发生错误则返回 NULL 支持的参数:
  • (U)Int* 的字符串表示形式。
不支持的参数 (返回 NULL) :
  • Float* 值的字符串表示形式,包括 NaNInf
  • 二进制和十六进制值的字符串表示形式,例如 SELECT toInt32OrNull('0xc0fe');
如果输入值无法在 Int32 的取值范围内表示,结果会发生上溢或下溢。 这不视为错误。
另请参阅: 语法
参数
  • x — 数字的字符串表示形式。String
返回值 返回 Int32 类型的值;如果转换失败,则返回 NULLInt32NULL 示例 用法示例
Query
Response

toInt32OrZero

引入版本:v1.1.0 toInt32 类似,此函数会将输入值转换为 Int32 类型的值;如果发生错误,则返回 0 支持的参数:
  • (U)Int* 的字符串表示形式。
不支持的参数 (返回 0) :
  • Float* 值的字符串表示形式,包括 NaNInf
  • 二进制和十六进制值的字符串表示形式,例如 SELECT toInt32OrZero('0xc0fe');
如果输入值超出 Int32 的表示范围,结果会发生上溢或下溢。 这不视为错误。
另请参阅: 语法
参数
  • x — 数字的 String 表示形式。String
返回值 返回类型为 Int32 的值;如果转换失败,则返回 0Int32 示例 使用示例
Query
Response

toInt64

引入版本:v1.1.0 将输入值转换为 Int64 类型的值。 如果发生错误,则会抛出异常。 支持的参数:
  • (U)Int* 类型的值或其字符串表示形式。
  • Float* 类型的值。
不支持的参数:
  • Float* 值的字符串表示形式,包括 NaNInf
  • 二进制和十六进制值的字符串表示形式,例如 SELECT toInt64('0xc0fe');
如果输入值超出 Int64 的表示范围,结果会发生上溢或下溢。 这不视为错误。 例如:SELECT toInt64(9223372036854775808) == -9223372036854775808;
该函数使用向零舍入,即会截断数字的小数位。
另请参见: 语法
参数
  • expr — 返回数值或数值字符串表示形式的表达式。支持:类型为 (U)Int* 的值或其字符串表示形式,以及类型为 Float* 的值。不支持:Float* 值的字符串表示形式 (包括 NaN 和 Inf) ,以及二进制和十六进制值的字符串表示形式。表达式
返回值 返回一个 64 位整数值。Int64 示例 使用示例
Query
Response

toInt64OrDefault

引入版本:v21.11.0 toInt64 类似,此函数会将输入值转换为 Int64 类型的值,但如果发生错误,则返回默认值。 如果未传入 default 值,则发生错误时返回 0 语法
参数
  • expr — 返回数字或数字的字符串表示形式的表达式。String(U)Int*Float*
  • default — 可选。解析失败时返回的默认值。Int64
返回值 成功时返回 Int64 类型的值;否则,如果传入了默认值则返回该默认值,未传入则返回 0。Int64 示例 成功转换
Query
Response
转换失败
Query
Response

toInt64OrNull

引入版本:v1.1.0 toInt64 类似,此函数将输入值转换为 Int64 类型的值,但如果发生错误,则返回 NULL 支持的参数:
  • (U)Int* 的字符串表示形式。
不支持的参数 (返回 NULL) :
  • Float* 值的字符串表示形式,包括 NaNInf
  • 二进制和十六进制值的字符串表示形式,例如 SELECT toInt64OrNull('0xc0fe');
如果输入值超出 Int64 的表示范围,结果会发生上溢或下溢。 这不视为错误。
另请参见: 语法
参数
  • x — 数值的字符串表示形式。String
返回值 返回 Int64 类型的值;如果转换失败,则返回 NULLInt64NULL 示例 使用示例
Query
Response

toInt64OrZero

引入版本:v1.1.0 将输入值转换为 Int64 类型,但如果发生错误则返回 0。 与 toInt64 类似,不过它会返回 0,而不是抛出异常。 另请参见: 语法
参数 返回值 返回转换后的输入值;如果转换失败,则返回 0Int64 示例 使用示例
Query
Response
转换失败则返回零
Query
Response

toInt8

引入版本:v1.1.0 将输入值转换为 Int8 类型的值。 出错时会抛出异常。 支持的参数:
  • (U)Int* 类型的值或其字符串表示形式。
  • Float* 类型的值。
不支持的参数:
  • Float* 值的字符串表示形式,包括 NaNInf
  • 二进制和十六进制值的字符串表示形式,例如 SELECT toInt8('0xc0fe');
如果输入值超出 Int8 的表示范围,结果会发生上溢或下溢。 这不视为错误。 例如:SELECT toInt8(128) == -128;
此函数使用向零舍入,即会截去数字的小数位。
另请参见: 语法
参数
  • expr — 返回数值或数值的字符串表示形式的表达式。表达式
返回值 返回一个 8 位整数值。Int8 示例 使用示例
Query
Response

toInt8OrDefault

首次引入版本:v21.11.0 toInt8 类似,此函数会将输入值转换为 Int8 类型的值,但如果发生错误,则返回默认值。 如果未传入 default 值,则在发生错误时返回 0 语法
参数
  • expr — 返回数值或数值字符串表示形式的表达式。String(U)Int*Float*
  • default — 可选。解析失败时返回的默认值。Int8
返回值 如果成功,则返回 Int8 类型的值;否则,如果传入了默认值,则返回该默认值;如果未传入,则返回 0Int8 示例 转换成功
Query
Response
转换失败
Query
Response

toInt8OrNull

引入版本:v1.1.0 toInt8 类似,此函数会将输入值转换为 Int8 类型的值,但如果发生错误,则返回 NULL 支持的参数:
  • (U)Int* 的字符串表示形式。
不支持的参数 (返回 NULL) :
  • Float* 值的字符串表示形式,包括 NaNInf
  • 二进制值和十六进制值的字符串表示形式,例如 SELECT toInt8OrNull('0xc0fe');
如果输入值无法在 Int8 的范围内表示,结果会发生上溢或下溢。 这不视为错误。
另请参阅: 语法
参数
  • x — 数值的 String 字符串表示形式。String
返回值 返回 Int8 类型的值;如果转换失败,则返回 NULLInt8NULL 示例 使用示例
Query
Response

toInt8OrZero

版本引入:v1.1.0 toInt8 类似,此函数会将输入值转换为 Int8 类型的值,但如果出错则返回 0 支持的参数:
  • (U)Int* 的字符串表示形式。
不支持的参数 (返回 0) :
  • Float* 值的字符串表示形式,包括 NaNInf
  • 二进制和十六进制值的字符串表示形式,例如 SELECT toInt8OrZero('0xc0fe');
如果输入值超出 Int8 的表示范围,结果会发生上溢或下溢。 这不视为错误。
另请参见: 语法
参数
  • x — 数值的 String 字符串表示形式。String
返回值 返回 Int8 类型的值;如果转换失败,则返回 0Int8 示例 使用示例
Query
Response

toInterval

引入版本:v25.4.0 根据数值和单位字符串创建一个 Interval 值。 该函数提供了一种统一的方法:通过将单位指定为字符串参数,用同一个函数创建不同类型的时间间隔 (秒、分钟、小时、天、周、月、季度、年) 。 单位字符串不区分大小写。 这等同于调用 toIntervalSecondtoIntervalMinutetoIntervalDay 等特定类型的函数, 但允许通过字符串参数动态指定单位。 语法
参数
  • value — 表示单位数量的数值,可为任意数值类型。Int8Int16Int32Int64UInt8UInt16UInt32UInt64Float32Float64
  • unit — 时间单位。必须为常量字符串。有效值:‘nanosecond’、‘microsecond’、‘millisecond’、‘second’、‘minute’、‘hour’、‘day’、‘week’、‘month’、‘quarter’、‘year’。String
返回值 返回指定类型的 Interval 值。结果类型取决于 unit:IntervalNanosecond、IntervalMicrosecond、IntervalMillisecond、IntervalSecond、IntervalMinute、IntervalHour、IntervalDay、IntervalWeek、IntervalMonth、IntervalQuarter 或 IntervalYear。Interval 示例 创建不同单位的时间间隔
Query
Response
在日期算术中使用时间间隔
Query
Response
动态生成时间间隔
Query
Response

toIntervalDay

在 v1.1.0 中引入 返回一个由 n 天组成、数据类型为 IntervalDay 的时间间隔。 语法
参数
  • n — 天数。整数、整数的字符串表示形式或浮点数。(U)Int*Float*String
返回值 返回 n 天的时间间隔。Interval 示例 使用示例
Query
Response

toIntervalHour

在 v1.1.0 中引入 返回一个表示 n 小时的时间间隔,数据类型为 IntervalHour 语法
参数
  • n — 小时数。可以是整数、其字符串表示形式或浮点数。Int*UInt*Float*String
返回值 返回一个 n 小时的时间间隔。Interval 示例 用法示例
Query
Response

toIntervalMicrosecond

引入版本:v22.6.0 返回一个由 n 微秒组成的时间间隔,数据类型为 IntervalMicrosecond 语法
参数 返回值 返回由 n 微秒构成的时间间隔。Interval 示例 使用示例
Query
Response

toIntervalMillisecond

引入版本:v22.6.0 返回一个 n 毫秒的时间间隔,数据类型为 IntervalMillisecond 语法
参数 返回值 返回一个包含 n 毫秒的时间间隔。Interval 示例 使用示例
Query
Response

toIntervalMinute

引入版本:v1.1.0 返回一个表示 n 分钟的时间间隔,数据类型为 IntervalMinute 语法
参数
  • n — 分钟数。整数、其字符串表示形式以及浮点数。(U)Int*Float*String
返回值 返回 n 分钟的时间间隔。Interval 示例 用法示例
Query
Response

toIntervalMonth

引入版本:v1.1.0 返回一个 n 个月的时间间隔,数据类型为 IntervalMonth 语法
参数 返回值 返回 n 个月的时间间隔。Interval 示例 使用示例
Query
Response

toIntervalNanosecond

引入版本:v22.6.0 返回一个 n 纳秒的时间间隔,数据类型为 IntervalNanosecond 语法
参数 返回值 返回 n 纳秒的时间间隔。Interval 示例 使用示例
Query
Response

toIntervalQuarter

在 v1.1.0 中引入 返回一个由 n 个季度组成、数据类型为 IntervalQuarter 的时间间隔。 语法
参数 返回值 返回 n 个季度的时间间隔。Interval 示例 使用示例
Query
Response

toIntervalSecond

引入版本:v1.1.0 返回一个由 n 秒构成、数据类型为 IntervalSecond 的时间间隔。 语法
参数
  • n — 秒数。整数、其字符串表示形式以及浮点数。(U)Int*Float*String
返回值 返回 n 秒的时间间隔。Interval 示例 使用示例
Query
Response

toIntervalWeek

引入版本:v1.1.0 返回一个表示 n 周的时间间隔,数据类型为 IntervalWeek 语法
参数 返回值 返回 n 周的时间间隔。Interval 示例 用法示例
Query
Response

toIntervalYear

引入版本:v1.1.0 返回一个表示 n 年的时间间隔,数据类型为 IntervalYear 语法
参数 返回值 返回一个 n 年的时间间隔。Interval 示例 使用示例
Query
Response

toLowCardinality

引入版本:v18.12.0 将输入参数转换为相同数据类型的 LowCardinality 版本。
若要将 LowCardinality 数据类型转换为常规数据类型,请使用 CAST 函数。 例如:CAST(x AS String)
语法
参数 返回值 返回转换为 LowCardinality 数据类型后的输入值。LowCardinality 示例 使用示例
Query
Response

toString

引入版本:v1.1.0 将值转换为其字符串表示形式。 对于 DateTime 类型的参数,该函数还可以接受第二个 String 类型参数,用于指定时区名称。 语法
参数
  • value — 要转换为字符串的值。Any
  • timezone — 可选。用于 DateTime 转换的时区名称。String
返回值 返回输入值的字符串表示形式。String 示例 使用示例
Query
Response

toStringCutToZero

引入版本:v1.1.0 接受一个 StringFixedString 类型的参数,并返回一个 String,该 String 是在第一个空字节处截断后的原始字符串副本。 空字节 (\0) 被视为字符串终止符。 当空字节用于标记有效内容的结尾时,此函数可用于处理 C 风格字符串或二进制数据。 语法
参数 返回值 返回一个 String,包含第一个空字节之前的字符。String 示例 使用示例
Query
Response

toTime

引入版本:v1.1.0 将输入值转换为 Time 类型。 支持从 String、FixedString、DateTime 或表示自午夜起经过秒数的数值类型进行转换。 语法
参数 返回值 返回转换后的值。Time 示例 String 转换为 Time
Query
Response
DateTime 转换为 Time
Query
Response
将整数转换为时间
Query
Response

toTime64

引入版本:v25.6.0 将输入值转换为 Time64 类型。 支持从 String、FixedString、DateTime64,或表示自午夜起微秒数的数值类型进行转换。 为时间值提供微秒级精度。 语法
参数 返回值 返回转换后的输入值,精度为微秒。Time64(6) 示例 String 转换为 Time64
Query
Response
DateTime64 转换为 Time64
Query
Response
整数转换为 Time64
Query
Response

toTime64OrNull

引入版本:v25.6.0 将输入值转换为 Time64 类型的值;如果发生错误,则返回 NULL。 与 toTime64 类似,但在转换出错时会返回 NULL,而不是抛出异常。 另请参见: 语法
参数
  • x — 具有子秒级精度的时间字符串表示形式。String
返回值 成功时返回 Time64 值,否则返回 NULLTime64NULL 示例 用法示例
Query
Response

toTime64OrZero

引入版本:v25.6.0 将输入值转换为 Time64 类型的值;如果发生错误,则返回 00:00:00.000。 与 toTime64 类似,但在转换出错时会返回 00:00:00.000,而不是抛出异常。 语法
参数
  • x — 具有子秒级精度的时间字符串表示形式。String
返回值 如果成功,返回 Time64 值;否则返回 00:00:00.000Time64 示例 用法示例
Query
Response

toTimeOrNull

引入版本:v1.1.0 将输入值转换为 Time 类型的值;如果发生错误,则返回 NULL。 与 toTime 类似,但在转换出错时会返回 NULL,而不是抛出异常。 另请参见: 语法
参数
  • x — 时间的字符串表示形式。String
返回值 成功时返回 Time 值,否则返回 NULLTimeNULL 示例 使用示例
Query
Response

toTimeOrZero

Introduced in: v1.1.0 将输入值转换为 Time 类型的值;如果出错,则返回 00:00:00。 与 toTime 类似,但在转换出错时会返回 00:00:00,而不是抛出异常。 Syntax
参数
  • x — 时间的字符串表示形式。String
返回值 如果成功,返回 Time 值;否则返回 00:00:00Time 示例 使用示例
Query
Response

toUInt128

引入版本:v1.1.0 将输入值转换为 UInt128 类型的值。 出错时会抛出异常。 该函数采用向零舍入,即会截断数字的小数位。 支持的参数:
  • (U)Int* 类型的值或其字符串表示形式。
  • Float* 类型的值。
不支持的参数:
  • Float* 值的字符串表示形式,包括 NaNInf
  • 二进制和十六进制值的字符串表示形式,例如 SELECT toUInt128('0xc0fe');
如果输入值超出 UInt128 的表示范围,结果会发生上溢或下溢。 这不被视为错误。
另请参见: 语法
参数
  • expr — 返回数值或数值字符串表示形式的表达式。表达式
返回值 返回一个 128 位无符号整数值。UInt128 示例 用法示例
Query
Response

toUInt128OrDefault

引入版本:v21.11.0 toUInt128 类似,此函数会将输入值转换为 UInt128 类型的值,但如果发生错误,则返回默认值。 如果未传入 default 值,则在发生错误时返回 0 语法
参数
  • expr — 返回数值或数值字符串表示形式的表达式。String(U)Int*Float*
  • default — 可选。解析失败时返回的默认值。UInt128
返回值 成功时返回 UInt128 类型的值;否则,如果传入了默认值则返回该默认值,未传入则返回 0。UInt128 示例 转换成功
Query
Response
转换失败
Query
Response

toUInt128OrNull

引入版本:v21.6.0 toUInt128 类似,此函数将输入值转换为 UInt128 类型的值,但在发生错误时会返回 NULL 支持的参数:
  • (U)Int* 的字符串表示形式。
不支持的参数 (返回 NULL) :
  • Float* 值的字符串表示形式,包括 NaNInf
  • 二进制和十六进制值的字符串表示形式,例如 SELECT toUInt128OrNull('0xc0fe');
如果输入值无法在 UInt128 的取值范围内表示,则结果会发生上溢或下溢。 这不视为错误。
另请参阅: 语法
参数
  • x — 数字的 String 表示形式。String
返回值 返回 UInt128 类型的值;如果转换失败,则返回 NULLUInt128NULL 示例 使用示例
Query
Response

toUInt128OrZero

引入版本:v1.1.0 toUInt128 类似,此函数会将输入值转换为 UInt128 类型的值,但如果发生错误则返回 0 支持的参数:
  • (U)Int* 的字符串表示形式。
不支持的参数 (返回 0) :
  • Float* 值的字符串表示形式,包括 NaNInf
  • 二进制和十六进制值的字符串表示形式,例如 SELECT toUInt128OrZero('0xc0fe');
如果输入值超出 UInt128 的表示范围,结果会发生上溢或下溢。 这不视为错误。
另请参见: 语法
参数
  • x — 数字的 String 表示形式。String
返回值 返回 UInt128 类型的值;如果转换失败,则返回 0UInt128 示例 使用示例
Query
Response

toUInt16

引入版本:v1.1.0 将输入值转换为 UInt16 类型的值。 发生错误时会抛出异常。 支持的参数:
  • (U)Int* 类型的值或其字符串表示形式。
  • Float* 类型的值。
不支持的参数:
  • Float* 值的字符串表示形式,包括 NaNInf
  • 二进制和十六进制值的字符串表示形式,例如 SELECT toUInt16('0xc0fe');
如果输入值无法在 UInt16 的取值范围内表示,则结果会发生上溢或下溢。 这不视为错误。 例如:SELECT toUInt16(65536) == 0;
该函数使用向零舍入,即会截断数字的小数位。
另请参见: 语法
参数
  • expr — 返回数值或数值的字符串表示形式的表达式。表达式
返回值 返回一个 16 位无符号整数值。UInt16 示例 使用示例
Query
Response

toUInt16OrDefault

Introduced in:v21.11.0 toUInt16 类似,此函数会将输入值转换为 UInt16 类型的值,但如果发生错误,则返回默认值。 如果未传入 default 值,则在发生错误时返回 0 Syntax
参数
  • expr — 返回数值或数字字符串表示形式的表达式。String(U)Int*Float*
  • default — 可选。解析失败时返回的默认值。UInt16
返回值 成功时返回 UInt16 类型的值;否则,如果传入了默认值则返回该默认值,未传入则返回 0UInt16 示例 转换成功
Query
Response
转换失败
Query
Response

toUInt16OrNull

Introduced in: v1.1.0 toUInt16 类似,此函数会将输入值转换为 UInt16 类型的值,但如果发生错误则返回 NULL 支持的参数:
  • (U)Int8/16/32/128/256 的字符串表示形式。
不支持的参数 (返回 NULL) :
  • Float* 值的字符串表示形式,包括 NaNInf
  • 二进制和十六进制值的字符串表示形式,例如 SELECT toUInt16OrNull('0xc0fe');
如果输入值超出 UInt16 的表示范围,则结果会发生上溢或下溢。 这不视为错误。
See also: Syntax
参数
  • x — 数字的 String 表示形式。String
返回值 返回 UInt16 类型的值;如果转换失败,则返回 NULLUInt16NULL 示例 使用示例
Query
Response

toUInt16OrZero

引入于:v1.1.0 toUInt16 类似,此函数将输入值转换为 UInt16 类型的值,但在发生错误时会返回 0 支持的参数:
  • (U)Int8/16/32/128/256 的字符串表示形式。
不支持的参数 (返回 0) :
  • Float* 值的字符串表示形式,包括 NaNInf
  • 二进制和十六进制值的字符串表示形式,例如 SELECT toUInt16OrZero('0xc0fe');
如果输入值超出了 UInt16 的可表示范围,则结果会发生上溢或下溢。 这不视为错误。
另请参阅: 语法
参数
  • x — 数值的字符串表示形式。String
返回值 返回 UInt16 类型的值;如果转换失败,则返回 0UInt16 示例 使用示例
Query
Response

toUInt256

在 v1.1.0 中引入 将输入值转换为 UInt256 类型的值。 出错时会抛出异常。 该函数采用向零舍入,也就是说会截断数字的小数位。 支持的参数:
  • (U)Int* 类型的值或其字符串表示形式。
  • Float* 类型的值。
不支持的参数:
  • Float* 值的字符串表示形式,包括 NaNInf
  • 二进制和十六进制值的字符串表示形式,例如 SELECT toUInt256('0xc0fe');
如果输入值无法在 UInt256 的取值范围内表示,结果会发生上溢或下溢。 这不被视为错误。
另请参见: 语法
参数
  • expr — 返回数值或数值字符串表示形式的表达式。Expression
返回值 返回一个 256 位无符号整数。UInt256 示例 使用示例
Query
Response

toUInt256OrDefault

引入版本:v21.11.0 toUInt256 类似,此函数会将输入值转换为 UInt256 类型的值,但如果发生错误,则返回默认值。 如果未传入 default 值,则在发生错误时返回 0 语法
参数
  • expr — 返回数值或数值的字符串表示形式的表达式。String(U)Int*Float*
  • default — 可选。解析失败时返回的默认值。UInt256
返回值 成功时返回 UInt256 类型的值;否则,如果传入了默认值则返回该默认值,未传入则返回 0。UInt256 示例 转换成功
Query
Response
转换失败
Query
Response

toUInt256OrNull

引入版本:v20.8.0 toUInt256 类似,此函数会将输入值转换为 UInt256 类型的值,但如果发生错误,则返回 NULL 支持的参数:
  • (U)Int* 的字符串表示形式。
不支持的参数 (返回 NULL) :
  • Float* 值的字符串表示形式,包括 NaNInf
  • 二进制值和十六进制值的字符串表示形式,例如 SELECT toUInt256OrNull('0xc0fe');
如果输入值超出 UInt256 的表示范围,则结果会发生上溢或下溢。 这不视为错误。
另请参阅: 语法
参数
  • x — 数字的字符串表示形式。String
返回值 返回 UInt256 类型的值;如果转换失败,则返回 NULLUInt256NULL 示例 使用示例
Query
Response

toUInt256OrZero

引入于:v20.8.0 toUInt256 类似,此函数会将输入值转换为 UInt256 类型的值,但如果发生错误,则返回 0 支持的参数:
  • (U)Int* 的字符串表示形式。
不支持的参数 (返回 0) :
  • Float* 值的字符串表示形式,包括 NaNInf
  • 二进制和十六进制值的字符串表示形式,例如 SELECT toUInt256OrZero('0xc0fe');
如果输入值超出 UInt256 的可表示范围,结果会发生上溢或下溢。 这不视为错误。
另请参见: 语法
参数
  • x — 数值的 String 字符串表示形式。String
返回值 返回 UInt256 类型的值;如果转换失败,则返回 0UInt256 示例 使用示例
Query
Response

toUInt32

引入于:v1.1.0 将输入值转换为 UInt32 类型的值。 如果出错,则会抛出异常。 支持的参数:
  • (U)Int* 类型的值或其字符串表示形式。
  • Float* 类型的值。
不支持的参数:
  • Float* 值的字符串表示形式,包括 NaNInf
  • 二进制值和十六进制值的字符串表示形式,例如 SELECT toUInt32('0xc0fe');
如果输入值无法用 UInt32 的取值范围表示,结果会发生上溢或下溢。 这不视为错误。 例如:SELECT toUInt32(4294967296) == 0;
该函数使用向零舍入,即会截去数字的小数位。
另请参见: 语法
参数
  • expr — 返回数值或数值字符串表示形式的表达式。Expression
返回值 返回一个 32 位无符号整数。UInt32 示例 用法示例
Query
Response

toUInt32OrDefault

Introduced in: v21.11.0 toUInt32 类似,此函数会将输入值转换为 UInt32 类型的值,但发生错误时会返回默认值。 如果未传入 default 值,则发生错误时返回 0 Syntax
参数
  • expr — 返回数值或数值字符串表示形式的表达式。String(U)Int*Float*
  • default — 可选。解析失败时返回的默认值。UInt32
返回值 成功时返回 UInt32 类型的值;否则,如果传入了默认值则返回该默认值,未传入则返回 0UInt32 示例 转换成功
Query
Response
转换失败
Query
Response

toUInt32OrNull

引入于:v1.1.0 toUInt32 类似,此函数会将输入值转换为 UInt32 类型的值,但如果发生错误,则返回 NULL 支持的参数:
  • (U)Int8/16/32/128/256 的字符串表示形式。
不支持的参数 (返回 NULL) :
  • Float* 值的字符串表示形式,包括 NaNInf
  • 二进制和十六进制值的字符串表示形式,例如 SELECT toUInt32OrNull('0xc0fe');
如果输入值无法在 UInt32 的范围内表示,则结果会发生上溢或下溢。 这不视为错误。
另请参见: 语法
参数
  • x — 数值的 String 字符串表示形式。String
返回值 返回 UInt32 类型的值;如果转换失败,则返回 NULLUInt32NULL 示例 使用示例
Query
Response

toUInt32OrZero

引入版本:v1.1.0 toUInt32 类似,此函数会将输入值转换为 UInt32 类型的值,但如果发生错误,则返回 0 支持的参数:
  • (U)Int8/16/32/128/256 的字符串表示形式。
不支持的参数 (返回 0) :
  • Float* 值的字符串表示形式,包括 NaNInf
  • 二进制和十六进制值的字符串表示形式,例如 SELECT toUInt32OrZero('0xc0fe');
如果输入值无法在 UInt32 的取值范围内表示,则结果会发生上溢或下溢。 这不视为错误。
另请参见: 语法
参数
  • x — 数值的 String 表示形式。String
返回值 返回 UInt32 类型的值;如果转换失败,则返回 0UInt32 示例 使用示例
Query
Response

toUInt64

引入版本:v1.1.0 将输入值转换为 UInt64 类型的值。 发生错误时会抛出异常。 支持的参数:
  • (U)Int* 类型的值或其字符串表示形式。
  • Float* 类型的值。
不支持的类型:
  • Float* 值的字符串表示形式,包括 NaNInf
  • 二进制和十六进制值的字符串表示形式,例如 SELECT toUInt64('0xc0fe');
如果输入值超出 UInt64 的取值范围,结果会发生上溢或下溢。 这不视为错误。 例如:SELECT toUInt64(18446744073709551616) == 0;
该函数使用向零舍入,即会截断数字的小数位。
另请参见: 语法
参数
  • expr — 返回数字或数字的字符串表示形式的表达式。Expression
返回值 返回一个 64 位无符号整数值。UInt64 示例 使用示例
Query
Response

toUInt64OrDefault

首次引入版本:v21.11.0 toUInt64 类似,此函数会将输入值转换为 UInt64 类型的值,但如果发生错误,则返回默认值。 如果未传入 default 值,则发生错误时返回 0 语法
参数
  • expr — 返回数字或数字字符串表示形式的表达式。String(U)Int*Float*
  • default — 可选。解析失败时返回的默认值。UInt64
返回值 如果转换成功,返回 UInt64 类型的值;否则,如果传入了默认值则返回该默认值,未传入则返回 0。UInt64 示例 转换成功
Query
Response
转换失败
Query
Response

toUInt64OrNull

引入于:v1.1.0 toUInt64 类似,此函数会将输入值转换为 UInt64 类型的值,但如果发生错误则返回 NULL 支持的参数:
  • (U)Int* 的字符串表示形式。
不支持的参数 (返回 NULL) :
  • Float* 值的字符串表示形式,包括 NaNInf
  • 二进制和十六进制值的字符串表示形式,例如 SELECT toUInt64OrNull('0xc0fe');
如果输入值无法在 UInt64 的范围内表示,结果会发生上溢或下溢。 这不视为错误。
另请参见: 语法
参数
  • x — 数值的 String 字符串表示形式。String
返回值 返回 UInt64 类型的值;如果转换失败,则返回 NULLUInt64NULL 示例 使用示例
Query
Response

toUInt64OrZero

引入版本:v1.1.0 toUInt64 类似,此函数会将输入值转换为 UInt64 类型的值,但如果发生错误,则返回 0 支持的参数:
  • (U)Int* 的字符串表示形式。
不支持的参数 (返回 0) :
  • Float* 值的字符串表示形式,包括 NaNInf
  • 二进制和十六进制值的字符串表示形式,例如 SELECT toUInt64OrZero('0xc0fe');
如果输入值无法表示在 UInt64 的范围内,结果会发生上溢或下溢。 这不视为错误。
另请参见: 语法
参数
  • x — 数字的字符串表示形式。String
返回值 返回 UInt64 类型的值;如果转换失败,则返回 0UInt64 示例 使用示例
Query
Response

toUInt8

Introduced in: v1.1.0 将输入值转换为 UInt8 类型的值。 发生错误时会抛出异常。 支持的参数:
  • (U)Int* 类型的值或其字符串表示形式。
  • Float* 类型的值。
不支持的参数:
  • Float* 类型值的字符串表示形式,包括 NaNInf
  • 二进制和十六进制值的字符串表示形式,例如 SELECT toUInt8('0xc0fe');
如果输入值无法在 UInt8 的范围内表示,结果会发生上溢或下溢。 这不视为错误。 例如:SELECT toUInt8(256) == 0;
该函数采用向零舍入,即截断数字的小数位。
另请参见: 语法
参数
  • expr — 返回数字或数字的字符串表示形式的表达式。Expression
返回值 返回 8 位无符号整数值。UInt8 示例 使用示例
Query
Response

toUInt8OrDefault

Introduced in:v21.11.0 toUInt8 类似,此函数会将输入值转换为 UInt8 类型的值,但如果发生错误,则返回默认值。 如果未传入 default 值,则发生错误时返回 0 Syntax
参数
  • expr — 返回数值或数值字符串表示形式的表达式。String(U)Int*Float*
  • default — 可选。解析失败时返回的默认值。UInt8
返回值 成功时返回 UInt8 类型的值;否则,如果传入了默认值,则返回该默认值;如果未传入,则返回 0UInt8 示例 转换成功
Query
Response
转换失败
Query
Response

toUInt8OrNull

引入版本:v1.1.0 toUInt8 类似,此函数将输入值转换为 UInt8 类型的值,但在出错时返回 NULL 支持的参数:
  • (U)Int8/16/32/128/256 的字符串表示形式。
不支持的参数 (返回 NULL) :
  • 普通 Float* 值的字符串表示形式,包括 NaNInf
  • 二进制和十六进制值的字符串表示形式,例如 SELECT toUInt8OrNull('0xc0fe');
如果输入值无法在 UInt8 的取值范围内表示,则结果会发生上溢或下溢。 这不视为错误。
另请参见: 语法
参数
  • x — 数字的 String 字符串表示形式。String
返回值 返回类型为 UInt8 的值;如果转换失败,则返回 NULLUInt8NULL 示例 使用示例
Query
Response

toUInt8OrZero

首次引入于:v1.1.0 toUInt8 类似,此函数将输入值转换为 UInt8 类型的值,但在发生错误时返回 0 支持的参数:
  • (U)Int8/16/32/128/256 的字符串表示形式。
不支持的参数 (返回 0) :
  • 普通 Float* 值的字符串表示形式,包括 NaNInf
  • 二进制和十六进制值的字符串表示形式,例如 SELECT toUInt8OrZero('0xc0fe');
如果输入值超出 UInt8 的表示范围,则结果会发生上溢或下溢。 这不视为错误。
另请参阅: 语法
参数
  • x — 数字的 String 字符串表示形式。String
返回值 返回 UInt8 类型的值;如果转换失败,则返回 0UInt8 示例 用法示例
Query
Response

toUUID

引入版本:v1.1.0 将 String 类型的值转换为 UUID 值。 语法
参数 返回值 根据 UUID 的字符串表示形式返回一个 UUID。UUID 示例 使用示例
Query
Response

toUUIDOrZero

Introduced in: v20.12.0 将输入值转换为 UUID 类型的值,但如果发生错误,则返回零 UUID。 与 toUUID 类似,但在转换出错时会返回零 UUID (00000000-0000-0000-0000-000000000000) ,而不是抛出异常。 支持的参数:
  • 标准格式 UUID 的字符串表示形式 (8-4-4-4-12 个十六进制数字) 。
  • 不带连字符的 UUID 字符串表示形式 (32 个十六进制数字) 。
不支持的参数 (返回零 UUID) :
  • 无效的字符串格式。
  • 非字符串类型。
Syntax
参数
  • x — UUID 的字符串表示形式。String
返回值 成功时返回 UUID 值,否则返回零 UUID (00000000-0000-0000-0000-000000000000) 。UUID 示例 使用示例
Query
Response

toUnixTimestamp64Micro

引入版本:v20.5.0 DateTime64 转换为具有固定微秒精度的 Int64 值。 输入值会根据其精度相应地进行放大或缩小。
输出值以 UTC 为基准,而不是以输入值的时区为基准。
语法
参数
  • value — 任意精度的 DateTime64 类型值。DateTime64
返回值 返回以微秒为单位的 Unix 时间戳。Int64 示例 使用示例
Query
Response

toUnixTimestamp64Milli

引入版本:v20.5.0 DateTime64 转换为具有固定毫秒精度的 Int64 值。 输入值会根据其精度按相应比例放大或缩小。
输出值是相对于 UTC 的,而不是相对于输入值的时区。
语法
参数
  • value — 具有任意精度的 DateTime64 值。DateTime64
返回值 返回一个以毫秒为单位的 Unix 时间戳。Int64 示例 用法示例
Query
Response

toUnixTimestamp64Nano

引入版本:v20.5.0 DateTime64 转换为具有固定纳秒精度的 Int64 值。 输入值会根据其精度相应放大或缩小。
输出值是相对于 UTC 的,而不是相对于输入值的时区。
语法
参数
  • value — 任意精度的 DateTime64 值。DateTime64
返回值 返回以纳秒为单位的 Unix 时间戳。Int64 示例 使用示例
Query
Response

toUnixTimestamp64Second

引入版本:v24.12.0 DateTime64 转换为具有固定秒级精度的 Int64 值。 输入值会根据其精度相应按比例放大或缩小。
输出值是相对于 UTC 的,而不是相对于输入值的时区。
语法
参数
  • value — 任意精度的 DateTime64 类型值。DateTime64
返回值 返回以秒为单位的 Unix 时间戳。Int64 示例 使用示例
Query
Response
最后修改于 2026年6月19日