国产数据库KINGBASE与Oracle的函数对比

1、有区别的函数

表 1 有区别的函数

序号

Oracle函数名

KingbaseES函数名

功能简要说明

数值函数

1

REMAINDER(n2,n1)

/

取第一个参数除以第二个参数的余数,参数类型是 number或者可以转换为number的

2

NANVL(n2,n1)

/

当n2为NaN 时,函数返回n1 当n2不为NaN时,函数返回n2,参数类型是浮点数

3

/

cbrt(dp)

立方根函数

4

/

degrees(dp)

把弧度转换为角度

5

/

radians(dp)

把角度转换为弧度

6

/

div(y numeric,x numeric)

y/x的整数商

7

/

pi()

常数值

3.14159265358979

8

/

scale(numeric)

返回参数的精度,小数点后位数

字符函数

1

CHR(int,[USING NCHAR_CS])

chr(int)

返回int类型参数指定的值的字符,KingbaseES 不允许为0,Oracle 可以输入0

2

NCHR(number)

/

返回 number类型值的国际字符,KingbaseES不支持超出字符范围的数值

3

REGEXP_REPLACE (source_char, pattern,

replace_string, position,

occurrence, match_param)

regexp_replace(string text, pattern text, replacement text [, flags])

替换匹配。Oracle与 KingbaseES使用方式部分不同, Oracle中,position代表从源第几个字符开始 occurrence代表第几次替换。 KingbaseES没有这个参数

4

REGEXP_COUNT (source_char, patter

[,position [,match_param]])

regexp_count(source_char,pattern [,position, [,match_param]])

返回匹配字符串数量。 Oracle与KingbaseES的某些数据类型不同导致结果不同,例如time类型。 Oracle与KingbaseES的正则中 match_param的意义有部分不同导致结果不同,可参考 正则表达式元语法

5

REGEXP_INSTR(source_char, pattern[,position[,occurrence [,return_option[,match_param [,subexpr]]]]])

regexp_instr(source_char,pattern [,position[,occurrence

[,return_option [,match_param

[,subexpr]]]]])

返回字符串的起始位置,或者结束位置。 Oracle与KingbaseES的某些数据类型不同导致结果不同,例如time类型。 Oracle与KingbaseES的正则中 match_param的意义有部分不同导致结果不同,可参考 正则表达式元语法

6

/

strpos(string,substring)

position(substring in string)

返回指定字符串位置

7

/

convert(expr1 text,[,expr2

text],expr3 text)

把字符串转换为expr3 中声明的编码

8

NLS_INITCAP(char,[NLS_SORT = sort])

INITCAP(string)

将每一个词的第一个字母转换为大写形式并把剩下的字母转换为小写形式。

9

NLS_LOWER(char,nlsparam)

lower(string)

将字符串转换为小写形式

10

CONCAT(char1,char2)

concat(str "any" [, str "any" [, ...]])

串接所有参数的文本表示。NULL 参数被忽略。 Oracle :支持2个参数。 KingbaseES :支持多个参数

11

/

regexp_matches(string text, pattern text[,flags text])

返回对 string匹配一个 POSIX正则表达式得到的所有子串

日期类函数

1

CURRENT_TIMESTAMP

(precision)

CURRENT_TIMESTAMP

返回当前日期时间区别是精度不同

2

/

age(timestamp,timestamp)

age(timestamp)

减去参数,生成一个使用年、月(而不是只用日)的 "符号化"的结果

3

/

clock_timestamp()

返回当前日期和时间

4

/

date_part(text,timestamp)

date_part(text,interval)

返回 日期时间的子域

5

TRUNC(date,fmt)

date_trunc(text,timestamp)

date_trunc(text,interval)

返回截断到参数指定的日期时间

6

TO_DSINTERVAL(sql_format)

make_interval(years int DEFAULT 0, months int DEFAULT 0, weeks int DEFAULT 0, days intDE FAULT 0, hours int DEFAULT 0, mins int DEFAULT 0, secs double precision DEFAULT 0.0)

构造一个interval,输入参数一个是字符串,一个是数字

7

/

now()

返回当前日期和时间

比较函数

1

GREATEST(expr,expr,expr,...)

LEAST(expr,expr,expr,...)

GREATEST(value[, ...])

LEAST(value [,...])

选取最大或者最小的数值

oracle:只要有一个参数是null,则结果返回null

KingbaseES:全部参数是null才返回null

序列函数

1

/

currval(regclass)

返回最近一次用nextval获取的指定序列的值

2

/

nextval(regclass)

递增序列并返回新值

3

/

setval(regclass,bigint)

setval(regclass,bigint,boolean)

设置序列的当前值

4

/

lastval()

返回最近一次用nextval获取的任何序列的值

大对象函数

1

/

clob_import(string,string)

将指定的文件以 clob大对象的形式导入数据库。

2

/

clob_export(clob,string,string)

将clob 大对象的内容导出到磁盘文件。

3

/

blob_import(string,string)

将指定的文件以 blob大对象的形式导入数据库。

4

/

blob_export(blob,string,string)

将blob 大对象的内容导出到磁盘文件。

Null相关函数

1

NANVL(n2,n1)

CASE WHEN n2 is nan THEN n1 ELSE n2 END

浮点数 NAN值判断,如果n2是NAN则返回 n1,否则返回n2

2

/

NULLIF(value1,value2)

当value1和value2相等时,NULLIF返回一个空值。否则它返回value1

Environment 和Identifier 函数

1

/

version()

返回当前版本号

分析和聚集函数

1

COLLECT([DISTINCT UNIQUE] column [ORDER BY expr])

array_agg(expression)

形式上类似: KingbaseES返回参数类型的数组 Oracle 返回参数类型的嵌套表

2

CORR_KCORR_S(expr1,expr2,

[COEFFICIENT ONE_SIDED_SIG ONE_SIDED_SIG_POS

ONE_SIDED_SIG_NEG TWO_SIDED_SIG])

/

相关率

3

LISTAGG(measure_expr, delimiter) WITHIN GROUP

(order_by_clause)

string_agg(expression,delimiter)

输入值连接成一个串,用定界符分隔

4

MEDIAN(expr)

/

返回中间值

5

STATS_BINOMIAL_TEST (expr1,expr2,p)

/

统计二项测试是一个精确概率测试用于二分变量,那里只有两个可能值存在。它测试一个样品之间的差异比例和给定的比例

6

STATS_CROSSTAB(expr1,expr2)

/

用于分析两个变量

7

STATS_F_TEST(expr1,expr2)

/

测试两个方差是否有明显的不同

8

STATS_KS_TEST(expr1,expr2)

/

STATS_KS_TEST是柯尔莫哥洛夫斯米尔诺夫函数,它比较 expr1和expr2,判断他们是来自同一个总体还是来自具有相同分布的总体。

9

STATS_MODE(expr)

/

将expr传入的一组值作为分析对象,返回其中出现频率最高的值。

10

STATS_MW_TEST(expr1,expr2)

/

通过曼惠特尼测试比较两个独立样本,以检验两个总体具有相同分布函数的零假设与两个不同分布函数的备择假设

11

STATS_ONE_WAY_ANOVA (expr1,expr2)

/

单向方差分析函数(统计一维方差分析)测试差异在意味着(为团体或变量),通过比较两种统计学意义不同的估计方差

12

STATS_T_TEST_ONE(expr1)

/

单样本检验

13

STATS_T_TEST_PAIRED (expr1,expr2)

/

双样本匹配检验

14

STATS_T_TEST_INDEP (expr1,expr2)

/

具有相同方差的两个独立组检验

JSON函数

1

/

to_json(anyelement)

to_jsonb(anyelement)

返回为json或者jsonb

2

/

array_to_json(anyarray [,pretty_bool])

把数组作为一个JSON 数组返回

3

/

row_to_json(record [,pretty_bool])

把行作为一个JSON 对象返回

4

/

json_build_array(VARIADIC "any")

jsonb_build_array(VARIADIC "any")

从一个可变参数列表构造一个可能包含异质类型的 JSON数组。

5

/

json_build_object(VARIADIC "any")

jsonb_build_object(VARIADIC "any")

从一个可变参数列表构造一个JSON 对象

6

/

json_object(text[])

jsonb_object(text[])

从一个文本数组构造一个JSON 对象

7

/

json_array_length(json)

jsonb_array_length(jsonb)

返回最外层 JSON数组中的元素数量

8

/

json_each(json)

jsonb_each(jsonb)

json_each_text(json)

jsonb_each_text(jsonb)

扩展最外层的JSON对象成为一组键/值对

9

/

json_extract_path(from_json json, VARIADIC

path_elems text[])

jsonb_extract_path (from_json jsonb,VARIADIC

path_elems text[])

返回path_elems指向的JSON值(等效于#>操作符)

10

/

json_extract_path_text (from_json json, VARIADIC

path_elems text[])

jsonb_extract_path_text (from_json jsonb,VARIADIC

path_elems text[])

text 以文本返回由path_elems指向的 JSON值(等效于#>>操作符)

11

/

json_object_keys(json)

jsonb_object_keys(jsonb)

返回最外层 JSON 对象中的键集合

12

/

json_populate_record(base anyelement, from_json json)

jsonb_populate_record(base anyelement, from_json jsonb)

扩展from_json中的对象成一个行,它的列匹配由base定义的记录类型

13

/

json_populate_recordset(base anyelement, from_json json)

jsonb_populate_recordset(base anyelement, from_json jsonb)

扩展from_json中最外的对象数组为一个集合,该集合的列匹配由base定义的记录类型

14

/

json_array_elements(json)

jsonb_array_elements(jsonb)

把一个 JSON数组扩展成一个JSON 值的集合

15

/

json_array_elements_text(json)

jsonb_array_elements_text (jsonb)

把一个 JSON数组扩展成一个text值集合

16

/

json_typeof(json)

jsonb_typeof(jsonb)

把最外层的 JSON值的类型作为一个文本字符

串返回

17

/

json_to_record(json)

jsonb_to_record(jsonb)

从一个 JSON对象构建一个任意的记录

18

/

json_to_recordset(json)

jsonb_to_recordset(jsonb)

从一个 JSON对象数组构建一个任意的记录集合

19

/

json_strip_nulls(from_json json)

jsonb_strip_nulls(from_json jsonb)

返回具有空值对象域的from_json。其它空值不变

20

/

jsonb_set(target jsonb,

path text[],new_value jsonb,

[create_missing boolean])

若create_missing为真(缺省是true)并且通过path指定部分不存在,那么返回target,它具有 path指定部分, new_value 替换部分,或者new_value 添加部分

21

/

jsonb_insert(target jsonb,

path text[], new_value jsonb,

[insert_after boolean])

返回被插入了new_value对应的target

22

/

jsonb_pretty(from_json jsonb)

作为缩进JSON文本返回from_json

2. 无区别的函数

表 2无区别的函数

序号

Oracle函数名

KingbaseES 函数名

功能简要说明

数值函数

1

ABS(n)

abs(x)

绝对值

2

ACOS(n)

acos(x) acosd(x)

反余弦

3

ASIN(n)

asin(x) asind(x)

反正弦

4

ATAN(n)

atan(x) atand(x)

反正切

5

ATAN2(n1,n2)

atan2(y, x)

y/x反正切

6

TAN(n)

tan(x) tand(x)

正切

7

EXP

exp(dp or numeric)

指数

8

FLOOR

floor(dp or numeric)

不大于参数的最大整数 mod(y, x)

9

MOD

mod(y, x)

y/x的余数

10

SIGN

sign(dp or numeric)

参数的符号(-1,0,+1)

11

WIDTH_BUCKET

width_bucket(dp or numeric, dp or numeric, dp or numeric, int

返回一个桶

12

BITAND (expr1,expr2)

bitand(expr1,expr2 )

按位与,参数类型都是 number或者可以转换为number的

13

LN(n)

ln(dp or numeric)

自然对数

14

LOG(n2,n1)

log(dp or numeric)

log(b numeric,x numeric)

KingbaseES中单个参数是以10为底的对数两个参数的形式 KingbaseES和Oracle一致

15

POWER(n2,n1)

power(a dp,bdp)

power(a numeric,b numeric)

返回a的b次幂

16

ROUND (n[,integer])

round(dp or numeric)

round(v numeric,s int)

圆整为最接近的整数

圆整为s位小数数字

17

SQRT (n)

sqrt(dp or numeric)

平方根

18

TRUNC (n1[,n2])

trunc(dp or numeric)

trunc(v numeric,s int)

截断(向零靠近)

截断为s位小数位置的数字

19

CEIL (n)

ceil(dp or numeric)

ceiling(dp or numeric)

不小于参数的最小整数

20

BIN_TO_NUM(expr,...)

bin_to_num(expr ,...)

将二进制数转换为十进制。将任何数据类型或可以隐式转换为数据类型的非数据类型作为参数,每个expr必须为0 或1。

字符函数

1

SUBSTR

substring (string [from int] [for int])

提取子串

2

RPAD

rpad(string text,length int [,fill text])

用字符串expr3(第三个参数) 将字符串expr1(第一个参数) 从右边填充到指定的长度 expr2( 第二个参数),在第三个参数缺省时,填充空格。

3

REPLACE(char,search_string, replacement_string)

replace(string text,from text,to text)

将string中出现的所有子串from 替换为子串to

4

REGEXP_SUBSTR(source_char, pattern,position,occurrence, match_param,subexpr)

regexp_substr(string text,pattern text [,position int [,occurrence int [,flags text [,num int]]]])

在string 搜索一个POSIX 正则表达式字符串,返回的搜索到的子字符串

5

TRANSLATE(expr,from_string, to_string)

translate(string text,from text, to text)

string中任何匹配from集合中一个字符的字符会被替换成to集合中的相应字符

6

INSTRB(string, substring, position, occurrence)

instrb(expr1 text,expr2 text,

[expr3 int [,expr4 int]])

在父字符串expr1 中的第expr3个位置(从1开始)以字符为单位开始查找第expr4次出现的子字符串的位置,0表示不包含子字符串expr2 。如果expr3为负,则从expr1的倒数第expr3个位置开始反向查找,位置依然是从字符串开头算起。

7

LENGTH

length(string)

length(string bytea,encoding

name)

返回字符串长度

8

reverse(str)

reverse(str)

返回反转的字符串。

9

UPPER

upper(string)

将字符串转换成大写形式

10

LPAD(expr1 [,n,expr2])

lpad(string text,length int [,fill text])

将string 通过前置字符fill (默认是一个空格)填充到长度length。如果 string已经长于length ,则它被(从右边)截断。

11

LTRIM(char,set)

ltrim(string text [,characters text])

从string 的开头删除最长的只包含characters (默认是一个空格)的字串。

12

RTRIM(char,set)

rtrim(string text [,characters

text])

从string的结尾删除最长的只包含characters(默认是一个空格)的字串。

13

TRIM([LEADING|TRAILING |BOTH [trim_character] from]

[trim_character from] trim_source)

trim([leading|trailing|both] [characters from] string)

从string的开头 /结尾/两端删除最长的只包含characters (默认是一个空格)的串

14

ASCII(char)

ascii(string)

返回参数第一个字符的ASCII代码

15

LENGTHB(char)

lengthb(string)

返回字符串的字节数

16

SUBSTRB(char,position[,sub string_length])

substrb(expr1 text, [from] expr2 int[, [for] expr3 int])

取子字符串,在父字符串expr1(第一个参数)中的第 expr2(第二个参数)个字节位置开始取expr3(第三个参数)个字节,如果第三个参数缺省,则从第expr2 (第二个参数 )个位置开始取右面部分的全部,如果第二个参数为负,则是从父字符串的尾部截取expr3个字节。

日期时间

1

EXTRACT (field from expr)

extract (fieldfrom timestamp) extract(field from interval)

从当前日期时间抽取时间字段

2

TO_CHAR(datetime,fmt)

to_char(timestamp,text)

日期时间转换为字符

3

TO_TIMESTAMP(char,fmt)

to_timestamp(text,text)

返回日期时间

4

ADD_MONTHS ( date , integer )

ADD_MONTHS (expr1 日期/时间类型, expr2 INT)

返回expr1 加上expr2个月的日期时间值

5

LAST_DAY ( date )

LAST_DAY(expr1 日期/时间类型)

返回日期中的月份的最后一天

6

MONTHS_BETWEEN (date1,date2)

MONTHS_BETWEEN (date1,date2)

返回日期的月份差

7

NEXT_DAY(date,char)

NEXT_DAY(expr1 日期/时间类型, expr2 TEXT)

返回expr 1日期后的第一个由参数expr2命名的日期,参数expr2 的值必须在周一到周日范围中

8

SYSDATE

SYSDATE

返回当前系统日期

9

SYSTIMESTAMP

SYSTIMESTAMP

返回当前系统时间

10

TO_DATE(char, fmt)

to_date(text, text)

返回日期值输入参数一个是字符串,一个是数字

11

TO_TIMESTAMP (char, fmt)

make_time(hour int,min int, sec double precision)

make_timestamp(year int,month int,day int,hour int,min int,sec double precision)

make_timestamptz(year int,month int,day int,hour int,min int,sec double precision, [timezone text ])

to_timestamp (text, text)

返回日期时间值输入参数一个是字符串,一个是数字

12

OVERLAPS

(start1,end1) OVERLAPS (start2,end2)

在两个时间域(用它们的端点定义)重叠的时候得到真,当它们不重叠时得到假

13

CURRENT_DATE

current_date

当前日期

大对象函数

1

EMPTY_BLOB()

EMPTY_CLOB()

empty_blob()

empty_clob()

返回空大对象

Decoding函数

1

DECODE(expr,search,

result,default)

decode(expr,search,result,

default)

将 expr 和search值一个一个比较。如果相等则返回result 如果不等返回 default值。

NULL相关函数

1

COALESCE(expr,...)

COALESCE(value [, ...])

COALE SCE函数返回它的第一个非空参数的值。当且仅当所有参数都为空时才会返回空。

2

LNNVL(condition)

LNNVL(condition)

用于where条件中,condition为真时返回假,假时返回真

3

NULLIF(expr1,expr2)

NULLIF(value1,value2)

KingbaseES:value1可以为null oracle:value1不能为null

4

NVL(expr1,expr2)

NVL(expr1,expr2)

当 expr1 为 NULL 时,用 expr2 代替本表达式的值

5

NVL2(expr1,expr2,expr3)

NVL2(expr1,expr2,expr3)

当 expr1 为 NULL 时,返回值为 expr3;否则为 expr2

Environment 和Identifier 函数

1

sys_guid()

sys_guid()

返回一个全局唯一的标识符

2

uid

uid

返回目前执行环境下的用户 ID

3

user

User/current_user

返回当前用户

分析和聚集函数

1

COUNT (* DISTINCT ALL expr )

count

非空的输入行的数目

2

COVAR_POP(expr1,expr2)

OVER(a nalytic_clause)

covar_pop(Y,X)

总体协方差

3

COVAR_SAMP(expr1,expr2)

OVER(analytic_clause)

covar_samp(Y,X)

样本协方差

4

CUME_DIST(expr,) WITHIN

GROUP(ORDER BY expr)

cume_dist(args) WITHIN

GROUP (ORDER BY

sorted_args)

当前行的相对排名

5

DENSE_RANK(expr,) WITHIN GROUP(ORDER BY expr)

dense_rank(args) WITHIN

GROUP (ORDER BY

sorted_args)

不带间隙的当前行排名

6

MAX (DISTINCT ALL expr )

max(expression)

所有输入值中expression 的最大值

7

MIN (DISTINCT ALL expr )

min(expression)

所有输入值中expression 的最小值

8

PERCENT_RANK(expr,) WITHIN GROUP(ORDER BY expr)

percent_rank(args) WITHIN

GROUP (ORDER BY

sorted_args)

假想行的相对排名,范围从0 到 1

9

PERCENTILE_CONT(expr) WITHIN GROUP (ORDER BY expr)

percentile_cont (fractions)

WITHIN GROUP (ORDER BY sort_expression)

连续百分率

10

PERCENTILE_DISC(expr) WITHIN GROUP (ORDER BY expr)

percentile_disc(fraction)

WITHIN GROUP (ORDER BY sort_expression)

离散百分率

11

RANK(expr,) WITHIN GROUP ( ORDER BY expr)

rank(args) WITHIN GROUP (ORDER BY sorted_args)

假想行的排名,为重复的行留下间隔

12

REGR_SLOPE

regr_slope(Y, X)

由(X, Y)对决定的最小二乘拟合的线性方程的斜率

13

REGR_INTERCEPT

regr_intercept (Y, X)

由(X, Y)对决定的最小二乘拟合的线性方程的 y截距

14

REGR_COUNT

regr_count(Y, X)

两个表达式都不为空的输入行的数目

15

STDDEV (DISTINC TALL expr )

stddev (expression)

输入值的样本标准偏差

16

STDDEV_POP ( expr )

stddev_pop (expression)

输入值的总体标准偏差

17

STDDEV_SAMP ( expr )

stddev_samp (expression)

输入值的样本标准偏差

18

SUM (DISTINCT ALL expr )

sum(expression)

所有输入的 expression的和

19

VAR_POP ( expr )

var_pop (expression)

输入值的总体方差

20

FIRST

first_value (value any)

返回在窗口帧中第一行上计算的value

21

FIRST_VALUE *

first_value (value any)

返回在窗口帧中第一行上计算的value

22

LAG

lag(value anyelement [, offset integer [, default anyelement ]])

返回value,它在分区内当前行的之前offset 个位置的行上计算;如果没有这样的行,返回default替代。 (作为value必须是相同类型)。 offse t和default都是根据当前行计算的结果。如果忽略它们,则offset 默认是1,default 默认是空值

23

LAST

last_value (value any)

返回在窗口帧中最后一行上计算的value

24

LAST_VALUE *

last_value (value any)

返回在窗口帧中最后一行上计算的value

25

LEAD

lead(value anyelement [, offset integer [, default anyelement ]])

返回 value,它在分区内当前行的之后offset 个位置的行上计算;如果没有这样的行,返回default替代。 (作为value必须是相同类型)。offset 和default都是根据当前行计算的结果。如果忽略它们,则offset 默认是1,default 默认是空值

26

NTH_VALUE *

nth_value(value any, nth integer)

返回在窗口帧中第nth行(行从 1计数)上计算的 value;没有这样的行则返回空值

27

NTILE

ntile (num_buckets integer)

从1到参数值的整数范围,尽可能等分分区

28

ROW_NUMBER

row_number()

当前行在其分区中的行号,从1计

29

CORR ( expr1 , expr2 )[OVER ( analytic_clause )]

corr(Y,X)[OVER(analytic_clause)]

相关系数

30

AVG (DISTINCT ALL expr ) OVER ( analytic_clause )

avg(expression) OVER

(analytic_clause)

所有输入值的平均值(算术平均)

XML函数

1

XMLCOMMENT(value_expr)

xmlcomment(text)

创建了一个 XML 值

2

XMLCONCAT

(XMLType_instance)

xmlconcat(xml[, ...])

由单个 XML 值组成的列表串接成一个单独的值,这个值包含一个 XML 内容片断

3

XMLELEMENT

xmlelement(name name [, xmla ttributes(value [AS attname] [, ... ])] [, content, ...])

表达式 xmlelement使用给定名称、属性和内容产生一个 XML 元素。

4

XMLFOR EST(value_expr)

xmlforest (content [AS name] [, ...])

表达式xmlforest使用给定名称和内容产生一个元素的 XML 森林(序列)。

5

XMLPI

xmlpi(name target [, content])

表达式xmlpi创建一个 XML 处理指令。如果存在内容,内容不能包含字符序列

6

XMLROOT

xmlroot(xml, version text | no value [, standalone yes | no | no value])

表达式 xmlroot修改一个 XML 值的根结点的属性

7

XMLAGG

xmlagg(xml)

函数xmlagg是一个聚集函数。它将聚集函数调用的输入值串接起来

8

APPENDCHILDXML

appendchildxml(xml, XPath_string text, value_expr text[, nam espace_string])

将用户提供的值作为 XPath表达式指示的节点的子节点附加到目标XML上

9

UPDATEXML

updatexml(xml,XPath_string text,value_expr text

[,nam espace_string])

将XML实例、XPath及新的xml 更新值对作为参数,并返回XML具有更新值的实例

层次查询函数

1

SYS_CONNECT_BY_PATH (column,char)

SYS_CONNECT_BY_PATH (Expression,char)

返回从根元组到当前元组的路径,这个路径是由c har字符分隔的在各个元组上计算的Expression的值连接构成的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值