四、clickhouse类型转换函数

类型转换函数部分示例:

复制代码
SELECT toInt8(12.3334343), toFloat32(10.001), toFloat64(1.000040);
SELECT toString(now());
SELECT now() AS now_local, toString(now(), 'Asia/Yekaterinburg') AS now_yekat;
SELECT now() AS now_local, toDate(now()), toDateTime(now()), toUnixTimestamp(now());

SELECT
'2016-06-15 23:00:00' AS timestamp,
CAST(timestamp AS DateTime) AS datetime,
CAST(timestamp AS Date) AS date,
CAST(timestamp, 'String') AS string,
CAST(timestamp, 'FixedString(22)') AS fixed_string;

WITH
toDate('2019-01-01') AS date,
INTERVAL 1 WEEK AS interval_week,
toIntervalWeek(1) AS interval_to_week,
toIntervalMonth(1) AS interval_to_month
SELECT
date + interval_week,
date + interval_to_week,
date + interval_to_month;

WITH
toDateTime('2019-01-01 12:10:10') as datetime,
INTERVAL 1 HOUR AS interval_hour,
toIntervalHour(1) as invterval_to_hour
SELECT
plus(datetime, interval_hour),
plus(datetime, invterval_to_hour);
复制代码

 

--注意:

--当你把一个值从一个类型转换为另外一个类型的时候,你需要注意的是这是一个不安全的操作,可能导致数据的丢失。数据丢失一般发生在你将一个大的数据类型转换为小的数据类型的时候,或者你把两个不同的数据类型相互转换的时候。

 

  toInt(8 16 32 64 )

  转换一个输入值为Int类型。这个函数包括:

  • toInt8(expr) — 结果为Int8数据类型。
  • toInt16(expr) — 结果为Int16数据类型。
  • toInt32(expr) — 结果为Int32数据类型。
  • toInt64(expr) — 结果为Int64数据类型。

  参数

  • expr — 表达式返回一个数字或者代表数值类型的字符串。不支持二进制、八进制、十六进制的数字形式,有效数字之前的0也会被忽略。

  返回值

  整型在Int8Int16Int32,或者 Int64 的数据类型。

  函数使用rounding towards zero原则,这意味着会截断丢弃小数部分的数值。

  NaN and Inf转换是不确定的。具体视情况而定

例子

复制代码
SELECT
    toInt64('67888888888888899999999999999999999999999'),
    toInt32(32),
    toInt16('16'),
    toInt8(8.8)

Query id: 5e6028ee-7118-4ae6-8c98-0cfac339735f

┌─toInt64('67888888888888899999999999999999999999999')─┬─toInt32(32)─┬─toInt16('16')─┬─toInt8(8.8)─┐
│                                  521734202037213593532168 │
└──────────────────────────────────────────────────────┴─────────────┴───────────────┴─────────────┘
复制代码

 

  toInt(8 16 32 64)OrZero

  这个函数需要一个字符类型的入参,然后尝试把它转为Int (8 | 16 | 32 | 64),如果转换失败直接返回0。

  例子

复制代码
SELECT
    toInt64OrZero('123123'),
    toInt8OrZero('123qwe123')

Query id: f303b64b-72a6-48f0-bc41-e104ba2ed933

┌─toInt64OrZero('123123')─┬─toInt8OrZero('123qwe123')─┐
│                  1231230 │
└─────────────────────────┴───────────────────────────┘
复制代码

 

  toInt(8 16 32 64)OrNull

  这个函数需要一个字符类型的入参,然后尝试把它转为Int (8 | 16 | 32 | 64),如果转换失败直接返回NULL

  例子

复制代码
SELECT
    toInt64OrNull('123123'),
    toInt8OrNull('123qwe123')

Query id: 208ce15a-2e72-408e-a6ea-9d22bf695e44

┌─toInt64OrNull('123123')─┬─toInt8OrNull('123qwe123')─┐
│                  123123 │                      ᴺᵁᴸᴸ │
└─────────────────────────┴───────────────────────────┘
复制代码

 

  toUInt (8 16 32 64 )

  转换一个输入值到UInt类型。 这个函数包括:

  • toUInt8(expr) — 结果为UInt8数据类型。
  • toUInt16(expr) — 结果为UInt16数据类型。
  • toUInt32(expr) — 结果为UInt32数据类型。
  • toUInt64(expr) — 结果为UInt64数据类型。

  参数

  • expr — 表达式返回一个数字或者代表数值类型的字符串。不支持二进制、八进制、十六进制的数字形式,有效数字之前的0也会被忽略。

  返回值

  整型在UInt8UInt16UInt32,或者 UInt64 的数据类型。

  函数使用rounding towards zero原则,这意味着会截断丢弃小数部分的数值。

  对于负数和NaN and Inf来说转换的结果是不确定的。如果你传入一个负数,比如:'-32',ClickHouse会抛出异常。

  例子

复制代码
SELECT
    toUInt64(8.922222222222223e25),
    toUInt32(-32),
    toUInt16('16'),
    toUInt8(8.8)

Query id: e84e548f-0070-4912-90d6-9c91b8aec14c

┌─toUInt64(8.922222222222223e25)─┬─toUInt32(-32)─┬─toUInt16('16')─┬─toUInt8(8.8)─┐
│            92233720368547758084294967264168 │
└────────────────────────────────┴───────────────┴────────────────┴──────────────┘
复制代码

 

  toUInt(8|16|32|64)OrZero

  toUInt(8|16|32|64)OrNull

  toFloat(32|64)

  toFloat(32|64)OrZero

  toFloat(32|64)OrNull

  toDate

  toDateOrZero

  toDateOrNull

  toDateTime

  toDateTimeOrZero

  toDateTimeOrNull

  例子

复制代码
SELECT
    toUInt16OrZero('123qwe123'),
    toUInt32OrNull('222qwe123'),
    toFloat32('2344555555.66'),
    toFloat32OrZero('2ttte123'),
    toFloat64OrNull('2ii623')

Query id: 9d7c04cd-4f33-4b5f-85be-1bf12483efe1

┌─toUInt16OrZero('123qwe123')─┬─toUInt32OrNull('222qwe123')─┬─toFloat32('2344555555.66')─┬─toFloat32OrZero('2ttte123')─┬─toFloat64OrNull('2ii623')─┐
│                           0 │                        ᴺᵁᴸᴸ │                 23445555000 │                      ᴺᵁᴸᴸ │
└─────────────────────────────┴─────────────────────────────┴────────────────────────────┴─────────────────────────────┴───────────────────────────┘
复制代码
复制代码
SELECT
    toDate('2022-04-22'),
    toDateOrZero('2022-05'),
    toDateOrNull('90099-111'),
    toDateTime('2022-04-01'),
    toDateTimeOrZero('9977'),
    toDateTimeOrNull('44455')

Query id: ade131c8-65ae-4453-8df4-7f732faf55bd

┌─toDate('2022-04-22')─┬─toDateOrZero('2022-05')─┬─toDateOrNull('90099-111')─┬─toDateTime('2022-04-01')─┬─toDateTimeOrZero('9977')─┬─toDateTimeOrNull('44455')─┐
│           2022-04-221970-01-01 │                      ᴺᵁᴸᴸ │      2022-04-01 00:00:001970-01-01 08:00:001970-01-01 20:20:55 │
└──────────────────────┴─────────────────────────┴───────────────────────────┴──────────────────────────┴──────────────────────────┴───────────────────────────┘
复制代码

 

  toDecimal(32 64 128 )

  转换 value 到Decimal类型的值,其中精度为Svalue可以是一个数字或者一个字符串。S 指定小数位的精度。

  • toDecimal32(value, S)
  • toDecimal64(value, S)
  • toDecimal128(value, S)

  例子

复制代码
SELECT
    toDecimal32('452.7899944', 6),
    toDecimal64('422.7899944', 3),
    toDecimal128('422.7899944', 2)

Query id: 57ef4851-28fc-4c3e-95bd-27c269db8e8b

┌─toDecimal32('452.7899944', 6)─┬─toDecimal64('422.7899944', 3)─┬─toDecimal128('422.7899944', 2)─┐
│                    452.789994422.789422.78 │
└───────────────────────────────┴───────────────────────────────┴────────────────────────────────┘
复制代码

 

  toDecimal(32|64|128)OrNull

  转换一个输入的字符到Nullable(Decimal(P,S))类型的数据。这个函数包括:

  • toDecimal32OrNull(expr, S) — 结果为Nullable(Decimal32(S))数据类型。
  • toDecimal64OrNull(expr, S) — 结果为Nullable(Decimal64(S))数据类型。
  • toDecimal128OrNull(expr, S) — 结果为Nullable(Decimal128(S))数据类型。

  如果在解析输入值发生错误的时候你希望得到一个NULL值而不是抛出异常,你可以使用该函数。

  参数

  • expr — 表达式返回一个String类型的数据。 ClickHouse倾向于文本类型的表示带小数类型的数值,比如'1.111'
  • S — 小数位的精度。

  返回值

  Nullable(Decimal(P,S))类型的数据,包括:

  • 如果有的话,小数位S
  • 如果解析错误或者输入的数字的小数位多于S,那结果为NULL

  例子

复制代码
SELECT
    toDecimal32OrNull(toString(-1.111), 5) AS val,
    toTypeName(val)

Query id: e9ea6562-02c2-4e9f-b3d2-4eac0c7fd117

┌────val─┬─toTypeName(toDecimal32OrNull(toString(-1.111), 5))─┐
│ -1.111 │ Nullable(Decimal(9, 5))                            │
└────────┴────────────────────────────────────────────────────┘
复制代码

 

  toDecimal(32|64|128)OrZero

  转换输入值为Decimal(P,S)类型数据。这个函数包括:

  • toDecimal32OrZero( expr, S) — 结果为Decimal32(S) 数据类型。
  • toDecimal64OrZero( expr, S) — 结果为Decimal64(S) 数据类型。
  • toDecimal128OrZero( expr, S) — 结果为Decimal128(S) 数据类型。

  当解析错误的时候,你不需要抛出异常而希望得到0值,你可以使用该函数。

  参数

  • expr — 表达式返回一个String类型的数据。 ClickHouse倾向于文本类型的表示带小数类型的数值,比如'1.111'
  • S — 小数位的精度。

  返回值

  Nullable(Decimal(P,S))数据类型中的值。该值包含:

  • 如果有的话,小数位S
  • 如果解析错误或者输入的数字的小数位多于S,那结果为小数位精度为S0

  例子

复制代码
SELECT
    toDecimal32OrZero(toString(-1.111), 5) AS val,
    toTypeName(val)

Query id: 042e0052-c441-46ff-acfa-4663e2244f1f

┌────val─┬─toTypeName(toDecimal32OrZero(toString(-1.111), 5))─┐
│ -1.111Decimal(9, 5)                                      │
└────────┴────────────────────────────────────────────────────┘
复制代码

 

  toString

  这些函数用于在数字、字符串(不包含FixedString)、Date以及DateTime之间互相转换。 所有的函数都接收一个参数。

  当将其他类型转换到字符串或从字符串转换到其他类型时,使用与TabSeparated格式相同的规则对字符串的值进行格式化或解析。如果无法解析字符串则抛出异常并取消查询。

  当将Date转换为数字或反之,Date对应Unix时间戳的天数。 将DataTime转换为数字或反之,DateTime对应Unix时间戳的秒数。

  toDate/toDateTime函数的日期和日期时间格式定义如下:

YYYY-MM-DD
YYYY-MM-DD hh:mm:ss

  例外的是,如果将UInt32、Int32、UInt64或Int64类型的数值转换为Date类型,并且其对应的值大于等于65536,则该数值将被解析成unix时间戳(而不是对应的天数)。这意味着允许写入’toDate(unix_timestamp)‘这种常见情况,否则这将是错误的,并且需要便携更加繁琐的’toDate(toDateTime(unix_timestamp))’。

  Date与DateTime之间的转换以更为自然的方式进行:通过添加空的time或删除time。

  数值类型之间的转换与C++中不同数字类型之间的赋值相同的规则。

  此外,DateTime参数的toString函数可以在第二个参数中包含时区名称。 例如:Asia/Yekaterinburg在这种情况下,时间根据指定的时区进行格式化。

复制代码
SELECT
    now() AS now_local,
    toString(now(), 'Asia/Yekaterinburg') AS now_yekat

Query id: aa8d82d0-44f6-4827-b9ff-7ad7e0b3a5f4

┌───────────now_local─┬─now_yekat───────────┐
│ 2022-04-29 09:29:082022-04-29 06:29:08 │
└─────────────────────┴─────────────────────┘
复制代码

 

 

  toFixedString(s,N )

  将String类型的参数转换为FixedString(N)类型的值(具有固定长度N的字符串)。N必须是一个常量。 如果字符串的字节数少于N,则向右填充空字节。如果字符串的字节数多于N,则抛出异常。

  toStringCutToZero(s )

  接收String或FixedString参数。返回String,其内容在找到的第一个零字节处被截断。

  示例:

复制代码
SELECT
    toFixedString('foo', 8) AS s,
    toStringCutToZero(s) AS s_cut

Query id: 15765aa8-691c-454c-87ef-1907063e9f05

┌─s───┬─s_cut─┐
│ foo │ foo   │
└─────┴───────┘

1 rows in set. Elapsed: 0.025 sec.
复制代码

 

 

  reinterpretAsUInt(8|16|32|64)

  reinterpretAsInt(8|16|32|64)

  reinterpretAsFloat(32|64)

  reinterpretAsDate

  reinterpretAsDateTime

  这些函数接收一个字符串,并将放在字符串开头的字节解释为主机顺序中的数字(little endian)。如果字符串不够长,则函数就像使用必要数量的空字节填充字符串一样。如果字符串比需要的长,则忽略额外的字节。Date被解释为Unix时间戳的天数,DateTime被解释为Unix时间戳。

  例子

复制代码
SELECT
    reinterpretAsUInt8('9877.22'),
    reinterpretAsInt8('4666444'),
    reinterpretAsFloat32('24555.8889'),
    reinterpretAsDate('2022-04-05'),
    reinterpretAsDateTime('2022-04-06 13:45:23 124')

Query id: 509b455b-60a3-44aa-8394-761dacfd8fb0

┌─reinterpretAsUInt8('9877.22')─┬─reinterpretAsInt8('4666444')─┬─reinterpretAsFloat32('24555.8889')─┬─reinterpretAsDate('2022-04-05')─┬─reinterpretAsDateTime('2022-04-06 13:45:23 124')─┐
│                            57526.750371e-72003-10-131996-09-08 10:32:18 │
└───────────────────────────────┴──────────────────────────────┴────────────────────────────────────┴─────────────────────────────────┴──────────────────────────────────────────────────┘
复制代码

 

  reinterpretAsString

  此函数接收数字、Date或DateTime,并返回一个字符串,其中包含表示主机顺序(小端)的相应值的字节。从末尾删除空字节。例如,UInt32类型值255是一个字节长的字符串。

  reinterpretAsFixedString

  此函数接收数字、Date或DateTime,并返回包含表示主机顺序(小端)的相应值的字节的FixedString。从末尾删除空字节。例如,UInt32类型值255是一个长度为一个字节的FixedString。

  例子

复制代码
SELECT
    reinterpretAsString('2022-04-16 13:45:23'),
    reinterpretAsFixedString(422455521111)

Query id: c47e036e-d5a9-433c-9d4e-c2695ea2c4f6

┌─reinterpretAsString('2022-04-16 13:45:23')─┬─reinterpretAsFixedString(422455521111)─┐
│ 2022-04-16 13:45:23                        │ W¯O\b                                   │
└────────────────────────────────────────────┴────────────────────────────────────────┘
复制代码

 

  CAST(x, T )

  将’x’转换为’t’数据类型。还支持语法CAST(x AS t)

  示例:

复制代码
SELECT
    '2016-06-15 23:00:00' AS timestamp,
    CAST(timestamp, 'DateTime') AS datetime,
    CAST(timestamp, 'Date') AS date,
    CAST(timestamp, 'String') AS string,
    CAST(timestamp, 'FixedString(22)') AS fixed_string

Query id: 7648dafb-c56d-4078-99db-e63b658d34ad

┌─timestamp───────────┬────────────datetime─┬───────date─┬─string──────────────┬─fixed_string────────┐
│ 2016-06-15 23:00:002016-06-15 23:00:002016-06-152016-06-15 23:00:002016-06-15 23:00:00 │
└─────────────────────┴─────────────────────┴────────────┴─────────────────────┴─────────────────────┘
复制代码

 

 

  将参数转换为FixedString(N),仅适用于String或FixedString(N)类型的参数。

  支持将数据转换为可为空。例如:

复制代码
SELECT toTypeName(city)
FROM agg_table_basic

Query id: 16e17c24-b809-473d-9f0a-a0b5d8d026c8

┌─toTypeName(city)─┐
│ String           │
└──────────────────┘
┌─toTypeName(city)─┐
│ String           │
│ String           │
└──────────────────┘
复制代码
 
复制代码
SELECT toTypeName(CAST(city, 'Nullable(UInt16)'))
FROM agg_table_basic

Query id: 8d9334ab-6ea3-444c-80f7-e918969f0c0a

┌─toTypeName(CAST(city, 'Nullable(UInt16)'))─┐
│ Nullable(UInt16)                           │
└────────────────────────────────────────────┘
┌─toTypeName(CAST(city, 'Nullable(UInt16)'))─┐
│ Nullable(UInt16)                           │
│ Nullable(UInt16)                           │
└────────────────────────────────────────────┘
复制代码

 

 

  toInterval(年|季度||||小时|分钟|

  把一个数值类型的值转换为Interval类型的数据。

  语法

toIntervalSecond(number)
toIntervalMinute(number)
toIntervalHour(number)
toIntervalDay(number)
toIntervalWeek(number)
toIntervalMonth(number)
toIntervalQuarter(number)
toIntervalYear(number)
 

  参数

  • number — 正整数,持续的时间。

  返回值

  • 时间的Interval值。

  例子

复制代码
WITH
    toDate('2019-01-01') AS date,
    toIntervalWeek(1) AS interval_week,
    toIntervalWeek(1) AS interval_to_week
SELECT
    date + interval_week,
    date + interval_to_week

Query id: 7da100bf-ae9d-4521-9577-e2edd39a17a3

┌─plus(date, interval_week)─┬─plus(date, interval_to_week)─┐
│                2019-01-082019-01-08 │
└───────────────────────────┴──────────────────────────────┘
复制代码

 

 

  parseDateTimeBestEffort

  把String类型的时间日期转换为DateTime数据类型。

  该函数可以解析ISO 8601,RFC 1123 - 5.2.14 RFC-822 Date and Time Specification或者ClickHouse的一些别的时间日期格式。

  语法

parseDateTimeBestEffort(time_string [, time_zone]);
 

  参数

  • time_string — 字符类型的时间和日期。
  • time_zone — 字符类型的时区。

  非标准格式的支持

  • 9位或者10位的数字时间,unix timestamp.
  • 时间和日期组成的字符串: 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。这种情况下 YYYY-MM 默认为 2000-01
  • 包含时间日期以及时区信息: YYYY-MM-DD hh:mm:ss ±h:mm等。例如: 2020-12-12 17:36:00 -5:00

  对于所有的格式来说,这个函数通过全称或者第一个三个字符的月份名称来解析月份,比如:24/DEC/1824-Dec-1801-September-2018

  返回值

  • DateTime类型数据。

  例子

SELECT parseDateTimeBestEffort('12/12/2020 12:12:57') AS parseDateTimeBestEffort

Query id: c1df69ce-a1ee-4524-8aac-889631fa7a9e

┌─parseDateTimeBestEffort─┐
│     2020-12-12 12:12:57 │
└─────────────────────────┘
 
SELECT parseDateTimeBestEffort('Sat, 18 Aug 2018 07:22:16 GMT', 'Asia/Istanbul') AS parseDateTimeBestEffort

Query id: 50719349-0bfa-46bf-a971-da20a93c7673

┌─parseDateTimeBestEffort─┐
│     2018-08-18 10:22:16 │
└─────────────────────────┘

 

 
SELECT parseDateTimeBestEffort('1284101485') AS parseDateTimeBestEffort

Query id: de19b0cb-baa0-4733-a57d-21a7cb802103

┌─parseDateTimeBestEffort─┐
│     2010-09-10 14:51:25 │
└─────────────────────────┘

 

 
SELECT parseDateTimeBestEffort('2018-12-12 10:12:12') AS parseDateTimeBestEffort

Query id: 65da751b-1160-43bd-81a6-bd985488f7b5

┌─parseDateTimeBestEffort─┐
│     2018-12-12 10:12:12 │
└─────────────────────────┘

 

 
SELECT parseDateTimeBestEffort('10 20:19')

Query id: d99096a3-a4fd-4f1f-ba9b-66f9f4f20194

┌─parseDateTimeBestEffort('10 20:19')─┐
│                 2000-01-10 20:19:00 │
└─────────────────────────────────────┘

  parseDateTimeBestEffortOrNull

  这个函数和parseDateTimeBestEffort基本一致,除了无法解析返回结果为NULL

  parseDateTimeBestEffortOrZero

  这个函数和parseDateTimeBestEffort基本一致,除了无法解析返回结果为0

  toLowCardinality

  把输入值转换为LowCardianlity的相同类型的数据。

  如果要把LowCardinality类型的数据转换为其他类型,使用CAST函数。比如:CAST(x as String)

  语法

toLowCardinality(expr)

  参数

  • expr — 表达式为支持的数据类型的一种。

  返回值

  • expr的结果。

  类型: LowCardinality(expr_result_type)

  例子

SELECT toLowCardinality('1345.11')

Query id: 33d05784-1e8a-4ecd-97a8-aca0b2acfcfc

┌─toLowCardinality('1345.11')─┐
│ 1345.11                     │
└─────────────────────────────┘
 

  toUnixTimestamp64Milli

  toUnixTimestamp64Micro

  toUnixTimestamp64Nano

  把一个DateTime64类型的数据转换为Int64类型的数据,结果包含固定亚秒的精度。输入的值是变大还是变低依赖于输入的精度。需要注意的是输出的值是一个UTC的时间戳, 不是同一个时区的DateTime64值。

  语法

toUnixTimestamp64Milli(value)

  参数

  • value — 任何精度的DateTime64类型的数据。

  返回值

  • value Int64类型数据。

  例子

WITH toDateTime64('2019-09-16 19:20:12.345678910', 6) AS dt64
SELECT toUnixTimestamp64Milli(dt64)

Query id: 8b2858f6-b9b9-4cff-8765-e9886df37e8e

┌─toUnixTimestamp64Milli(dt64)─┐
│                1568632812345 │
└──────────────────────────────┘

 

WITH toDateTime64('2019-09-16 19:20:12.345678910', 6) AS dt64
SELECT toUnixTimestamp64Nano(dt64)

Query id: d9c07d28-0702-4da2-a144-82aeadd23788

┌─toUnixTimestamp64Nano(dt64)─┐
│         1568632812345678000 │
└─────────────────────────────┘

 

  fromUnixTimestamp64Milli

  fromUnixTimestamp64Micro

  fromUnixTimestamp64Nano

  把Int64类型的数据转换为DateTime64类型的数据,结果包含固定的亚秒精度和可选的时区。 输入的值是变大还是变低依赖于输入的精度。需要注意的是输入的值是一个UTC的时间戳, 不是一个包含时区的时间戳。

  语法

fromUnixTimestamp64Milli(value [, ti])
 

  参数

  • value — Int64类型的数据,可以是任意精度。
  • timezone — String类型的时区

  返回值

  • value DateTime64`类型的数据。

  例子

WITH CAST(1234567891011, 'Int64') AS i64
SELECT fromUnixTimestamp64Milli(i64, 'UTC')

Query id: 6bdad53e-f25d-4b3c-9b38-51eb3a189ddb

┌─fromUnixTimestamp64Milli(i64, 'UTC')─┐
│              2009-02-13 23:31:31.011 │
└──────────────────────────────────────┘

 

 

  accurateCastOrNull

  对字段值进行类型转换校验,转换成功返回转换后的类型数据,否则Null

复制代码
SELECT accurateCastOrNull(2, 'Int8'), accurateCastOrNull('ss', 'Int8');

SELECT
    accurateCastOrNull(2, 'Int8'),
    accurateCastOrNull('ss', 'Int8')

Query id: 853f4120-5c0e-484e-af07-e63690b20a80

┌─accurateCastOrNull(2, 'Int8')─┬─accurateCastOrNull('ss', 'Int8')─┐
│                             2 │                             ᴺᵁᴸᴸ │
└───────────────────────────────┴──────────────────────────────────┘

1 rows in set. Elapsed: 0.002 sec. 
复制代码

 

posted @   渐逝的星光  阅读(3761)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示