SQL-DDL-SYBASE/MSSQ

SQL-DDL-[SYBASE/MSSQL版本]
测试通过环境:微软数据库sql server2000
author:chinayaosir
blog:    http://blog.csdn.net/chinayaosir/
QQ:    44633197
------------------------------------------

符号约定:
[]:可有可无
():必须包含()
<>:必须出现
|:或者

DDL目录
1.数据库
    1.1数据库建立
    1.2数据库删除
2.表
    2.1表(建立/删除)
    2.2列(建立/删除/修改)    
    2.3索引(建立/删除)

3.完整性约束和事务
    3.1检查约束(建立/删除)
    3.2唯一约束(建立/删除)
    3.3主键约束(建立/删除)
    3.4外键约束(建立/删除)
    3.5事务(COMMIT/ROLLBACK)

4.视图(建立/删除)
    4.1视图(建立)
    4.2视图(删除)

5.数据库用户与权限
    5.0登录用户,角色,组别
    5.1GRANT  --授予权限
    5.2REVOKE --解除权限

6.存储过程(建立/删除)
    6.1建立存储过程
    6.2删除存储过程
    6.3游标应用

7.触发器(建立/删除)
    7.1建立触发器
    7.2删除触发器

8.函数(建立/删除)
    8.1建立函数
    8.2删除函数

9.变量,赋值,控制语句(存储过程,触发器,函数应用)
    9.1局部/全局变量定义
    9.2赋值语句set/select
    9.3条件语句(if/case)
    9.4循环语句(while)
    9.5定时执行(waitfor)

10.标准SQL字符串函数


-----------------------------------------------------------
主要内容
1.数据库(建立/删除)
1.1建立数据库
语法:create   database  <数据库名>  [其它参数]
代码:
//建立数据库 hr
create   database  hr    

1.2删除数据库。
语法:drop   database  <数据库名>
代码:
//删除数据库hr
drop   database  hr
-----------------------------------------------------------
2.表
2.1表(建立/删除)
2.1.1建立表
语法:
create   table    <表名>
(
<列名> <数据类型> [长度] <,>
<列名...>
)

代码:
//建立公司部门表
use hr
create table tb_basic_dept
(
id    int    not null,
name    varchar(20) ,
chair    varchar(20)
)

2.1.2删除表
语法:drop table <表名>
代码:
//删除部门表
drop table tb_basic_dept

-----------------------------------------------------------
2.2列(建立/删除/修改)
2.2.1添加列
语法:alter table <表名> add
<列名> <数据类型> [长度]  <,>
<列名...>
代码:
//tb_basic_dept表添加一列remark1
alter table tb_basic_dept  add
remark varchar(50)

//tb_basic_dept表添加多列remark1
alter table tb_basic_dept  add
remark1 varchar(50),
remark2 varchar(50),
remark3 varchar(50)

2.2.2删除列
语法:alter table <表名> drop column <列名>
代码:
//删除列remark
alter table tb_basic_dept drop column remark
//删除多列remark1,remark2,remark3
alter table tb_basic_dept drop column remark1,remark2,remark3


2.2.3修改列
语法:alter table <表名> alter column
<列名> <数据类型> [长度]  [null | not null]
代码:
//修改工资列为dec(8,2)
alter table tb_hr_gz
alter column gz dec(8,2) null
//修改工资列为real
alter table tb_hr_gz
alter column gz real null

-----------------------------------------------------------
2.3索引(建立/删除)
3.1建立索引
语法:
create index <索引名>
on <表名> <列名清表>
代码:
create index tb_hr_personl_info_ix
on tb_hr_personl_info (userid)

3.2删除索引
语法:
drop index <表名><.><索引名>
代码:
//删除索引名tb_hr_personl_info_ix
drop index tb_hr_personl_info.tb_hr_personl_info_ix

-----------------------------------------------------------
3.约束
3.1检查约束(建立/删除)
3.2唯一约束(建立/删除)
3.3主键约束(建立/删除)
3.4外键约束(建立/删除)

以下面两个表为例进行演示
create table tb_hr_bm
(
bm varchar(20) not null ,
remark varchar(100) default ''
)
create table tb_hr_gz
(
id int not null,
name varchar(30) not null,
hrid char(18) null,    
workage int null ,
bm varchar(20) null,
gz real null,
remark varchar(100) null
)
hrid=身份证号码
workage=工作年数
gz=工资金额
-----------------------------------------------------------

3.1检查约束(建立/删除)
检查约束建立(2种方法)
语法:
alter table name
add constraint <检查约束名> check<取值范围表达式>

代码:
//工资添加取值范围0 ~ 10000000000
方法1:
create table tb_hr_gz
(
...
gz real default 0.0 check(gz >=0 and gz <=10000000000),
...

)
方法2:
alter table tb_hr_gz
add constraint tb_hr_gz_ck check(gz >=0 and gz <=10000000000)

检查约束删除
语法:
alter table name
drop constraint <检查约束名>
代码:
//删除工资的检查约束
alter table tb_hr_gz
drop constraint tb_hr_gz_ck
-----------------------------------------------------------
3.2唯一约束(建立/删除)
添加唯一约束
语法:
alter table name
add constraint <唯一约束名> unique<列名>
代码:
//列如身份证号码是唯一的!
alter table tb_hr_gz
Add   constraint  tb_hr_gz_uk  unique(hrid)

删除唯一约束
语法:
alter table name
drop constraint <唯一约束名>
代码:
alter table tb_hr_gz    drop   constraint  tb_hr_gz_uk

-----------------------------------------------------------

3.2主键约束
添加主键
语法:
alter table table_name
add constraint <主键名称> Primary Key <列名>
代码:
create table tb_hr_bm
(
bm varchar(20) not null ,
remark varchar(100) default ''
)
alter table tb_hr_bm
add constraint tb_hr_bm_pk  Primary Key (bm)

删除主键
语法:
alter table table_name
drop constraint <主键名称>
代码
alter table table_name
drop constraint tb_hr_bm_pk

-----------------------------------------------------------
3.3外键约束

在现有表的基础之上,再加上外键约束!
外键约束名可定制,建议使用此方法,方便维护

3.3.1外键约束添加
语法:
alter table <表名>
add constraint <外键名>
foreign key(列名)
references <参考表名><列名>
<更新策略方式>
ON UPDATE|ON DELETE|CASCADE
//ON UPDATE CASCADE=级联更新
//ON DELETE CASCADE=级联删除

代码:
建立外键的主要代码
alter table tb_hr_personl_info
add constraint tb_hr_personl_info__bm_fk
foreign key(bm)
references tb_hr_bm (bm)
on update cascade
on delete cascade


//建立参考表部门
create table tb_hr_bm
(
bm varchar(20) not null ,
remark varchar(100) default ''
)
alter table tb_hr_bm
add constraint tb_hr_bm_pk  Primary Key (bm)
//建立个人信息表
use hr
create table tb_hr_personl_info
(
userid int not null ,
username varchar(20) null,
bm     varchar(20) null
)
/*为此表添加主键约束*/
alter table tb_hr_personl_info
add constraint tb_hr_personl_info_pk Primary Key (userid)
/*为个人信息表添加外键约束*/
alter table tb_hr_personl_info
add constraint tb_hr_personl_info__bm_fk
foreign key(bm)
references tb_hr_bm (bm)
on update cascade
on delete cascade


3.3.2外键约束删除
语法:
alter table <表名>
drop constraint <外键名>
代码:
//删除tb_hr_personl_info表的外键
alter table tb_hr_personl_info drop constraint tb_hr_personl_info__bm_fk;

-------------------------------------------------------------------------------------
3.5事务(COMMIT/ROLLBACK)
SET TRANSACTION --定义当前事务数据访问特征
COMMIT   --提交当前事务
ROLLBACK  --取消当前事务

-------------------------------------------------------------------------------------

4.视图(建立/删除)

4.1视图(建立)
语法:
create  view  <视图名> as <查询语句>
/*查询语句包括:简单查询,聚集函数查询,多表查询,连接查询,分组查询,子查询*/

代码:
//建立个人信息表的视图v_hr_personl_info
create view  v_hr_personl_info
as
select *
from tb_hr_personl_info


4.2视图(删除)
语法:
drop  view  <视图名>
代码:
//建立个人信息表的视图v_hr_personl_info
drop view  v_hr_personl_info

-------------------------------------------------------------------------------------
5.数据库用户与权限
5.0登录用户,角色,组别
添加登陆用户语法:
sp_addlogin [ @loginame = ] 'login'
    [ , [ @passwd = ] 'password' ]
    [ , [ @defdb = ] 'database' ]
    [ , [ @deflanguage = ] 'language' ]
    [ , [ @sid = ] sid ]
    [ , [ @encryptopt= ] 'encryption_option' ]

执行代码:
在数据库testdb上面添加一个登陆用户test,密码为tt
EXEC sp_addlogin 'test', 'tt', 'testdb', 'us_english'

5.1GRANT  --授予权限
GRANT : 赋予一个用户/组或所有用户访问权限

grant语法:
GRANT privilege [, ...] ON object [, ...]
TO { PUBLIC | GROUP group | username }

privilege取值范围如下:
SELECT
访问声明的表/视图的所有列/字段.
INSERT
向声明的表中插入所有列字段.
UPDATE
更新声明的表所有列/字段.
DELETE
从声明的表中删除所有行.
RULE
在表/视图上定义规则 (参见 CREATE RULE 语句).
ALL
赋予所有权限.

object取值范围如下:
table
view
sequence

PUBLIC
代表是所有用户的简写.
GROUP
将要赋予权限的组 group .
username
将要赋予权限的用户名.PUBLIC 是代表所有用户的简写.
如果成功,返回输出CHANGE信息.

---------------------------------------------------------------------------
5.2REVOKE --解除权限
REVOKE { ALL | statement [ ,...n ] }
FROM security_account [ ,...n ]
ALL:
指定将删除所有适用的权限。
对于语句权限,只有 sysadmin 固定服务器角色成员可以使用 ALL。
对于对象权限,sysadmin 固定服务器角色成员、db_owne 固定数据库角色成员和数据库对象所有者都可以使用 ALL。
statement:
是要删除其权限的授权语句。语句列表可以包括:
* CREATE DATABASE
* CREATE DEFAULT
* CREATE FUNCTION
* CREATE PROCEDURE
* CREATE RULE
* CREATE TABLE
* CREATE VIEW
* BACKUP DATABASE
* BACKUP LOG

FROM:
指定安全帐户列表。
security_account:
是当前数据库内将要被删除权限的安全帐户。
安全帐户可以是:SQL Server用户,SQL Server角色。

-------------------------------------------------------------------------------------
6.存储过程(建立/删除)
6.1建立存储过程
语法:
create procedure <存储过程名>
(
[输入参数列表],[返回参数列表 output]
)
as
[局部变量定义]
begin
    {语句体}
end
按子查询删除数据

/*应用存储过程*/
代码0:
create procedure p_update_name_tb_hr_gz
(@id int,
@newname varchar(30)
)
as
begin
 if (exists(select * from tb_hr_gz where id=@id))
 begin
     update tb_hr_gz  set name=@newname  where id=@id

 end

end

/*测试存储过程*/
EXEC dbo.p_update_name_tb_hr_gz '112','chenglei'

代码1:
create  delete_o_itemlcoaso
as    
begin    
delete  o_itemlcoaso    
    from o_itemlcoaso,o_itemallrow    
    where     
    o_itemlcoaso.oc_number+o_itemlcoaso.itemnumber not in(
        select oc_number+itemnumber    
        from o_itemallrow    
    )    
end  

按传入的4个参数删除数据
代码2:
create procedure p_oa_change_shippdate
(        
@oc_number char(8),  
@itemnumber char(14),  
@old_shippdate datetime,        
@new_shippdate datetime  
)        
as        
    
begin  
    update o_factory
    set o_factory.shipp_date=@new_shippdate  
    where
    (o_factory.oc_number=@oc_number)  
    and (o_factory.itemnumber=@itemnumber)  
    and (o_factory.shipp_date=@old_shippdate)  
    
    update o_factory_maker
    set o_factory_maker.shipp_date=@new_shippdate  
    where (o_factory_maker.oc_number=@oc_number)  
    and (o_factory_maker.itemnumber=@itemnumber)  
    and (o_factory_maker.shipp_date=@old_shippdate)
end  

6.2删除存储过程
语法:
drop procedure <存储过程名>
删除
代码:
drop procedure p_oa_change_shippdate

--------------------------------------

6.3游标应用
每一个游标必须有四个组成部分这四个关键部分必须符合下面的顺序;
1.DECLARE --为查询设定游标
2.OPEN  --检索查询结果打开一个游标
3.FETCH --检索一行查询结果
4.CLOSE / DEALLOCATE--关闭游标或者重新分配游标

语法::
DECLARE cursor_name [INSENSITIVE] [SCROLL] CURSOR
FOR select_statement

语法框架:
DECLARE <游标名称> CURSOR FOR(select sql)
OPEN <游标名称>
while @@fetch_status = 0  
begin
FETCH NEXT FROM <游标名称> INTO <变量名清单>
{其它代码处理}
end
CLOSE <游标名称>

/*带游标的存储过程*/
代码1:
create procedure p_fill_remark_tb_hr_gz
as
 declare @id1 int
 declare @name1 varchar(30)
 declare @bm1 varchar(20)

begin
  declare cursor1 cursor for select id,name,bm from tb_hr_gz
  open cursor1
  fetch next from cursor1 into @id1,@name1,@bm1

  while @@fetch_status = 0
  begin
  update tb_hr_gz
  set remark=@name1+'-'+@bm1
  where id=@id1
  fetch next from cursor1 into @id1,@name1,@bm1
  end 
  close cursor1
end

/*测试带游标的存储过程*/
EXEC dbo.p_fill_remark_tb_hr_gz

代码2:
declare @code int,@name varchar(20)
delcare cursor1 cursor for
select code,pkname from tablename
open cursor1
fetch next from cursor1 into @code,@name
while @@fetch_status <> 0
begin
--do some things
fetch next from cursor1 into @code,@name
end
close cursor1


-----------------------------------------------------------------
7.触发器(建立/删除)
7.1建立触发器
语法:
create  trigger <触发器名称> on <表名>
[for insert | update | delete]
as
[定义变量]
begin

    {代码块...}
end

代码0:
create  trigger tg_tb_hr_bm
on tb_hr_bm
for insert,update,delete
as
  declare @bm_d varchar(20)
  declare @bm_i varchar(20)
begin
  set @bm_d=(select bm from deleted) 
  set @bm_i=(select bm from inserted) 
  if  exists(select *  from tb_hr_gz ,deleted where(tb_hr_gz.bm =deleted.bm  ))      
  begin
      update tb_hr_gz     set bm=''  where  bm =@bm_d
  end
 
  if update(bm)
    begin   
        update tb_hr_gz         set bm=@bm_i      where  bm =@bm_i
    end
end

代码1:
create  trigger dbo.tg_w_house_center on dbo.w_house_center
for insert,update,delete
as
    declare @mtrlid      varchar(18)
    declare @factqty     decimal(10,2)
    declare @delmtrlid   varchar(18)
begin
    select @mtrlid        =(select mtrlid from inserted)             
    select @factqty     =(select factqty  from inserted)            
    select @delmtrlid    =(select mtrlid from deleted)  
begin    
    --如果新建立一个物料编号的库存量,则更新物料编号的库存
    if  exists(select *  from b_basic_mtrl ,inserted where(b_basic_mtrl.mtrlid =inserted.mtrlid  ))        
        begin
        update b_basic_mtrl   
        set b_basic_mtrl.factqty=@factqty
        from b_basic_mtrl,inserted   
        where  b_basic_mtrl.mtrlid =inserted.mtrlid
        end
    
    --如果修改库存数量,则直接更改物料编号的库存量
    if update(factqty)
    begin    
        update b_basic_mtrl
        set b_basic_mtrl.factqty=@factqty
        from b_basic_mtrl,inserted   
        where  b_basic_mtrl.mtrlid =inserted.mtrlid    
    end
    --如果删除此物料编号,更新库存数量为0
    if (not(@delmtrlid is null))
    begin
        if  exists(select *  from b_basic_mtrl ,deleted where(b_basic_mtrl.mtrlid =deleted.mtrlid  ))
        begin
            update b_basic_mtrl
            set b_basic_mtrl.factqty=0     
            from b_basic_mtrl,deleted   
            where b_basic_mtrl.mtrlid =deleted.mtrlid
        end

    end

end


7.2删除触发器
语法:
drop trigger <触发器名称>
-------------------------------
代码:
drop trigger tg_w_house_center

-------------------------------------------------------------------------------------

8.函数(建立/删除)
8.1建立函数
语法:
CREATE FUNCTION <函数名>(参数变量列表)
[返回值RETURNS 数据类型] [WITH ENCRYPTION]
AS
BEGIN

    {函数代码体....}    

END

函数f_amt_to_eng()功能:数字金额转换为英文字母金额

代码:
CREATE FUNCTION f_amt_to_eng(@num numeric(15,2))
RETURNS varchar(400) WITH ENCRYPTION
AS
BEGIN

  DECLARE @i int,@hundreds int,@tenth int,@one int
  DECLARE @thousand int,@million int,@billion int
  DECLARE @numbers varchar(400),@s varchar(15),@result varchar(400)
  SET @numbers='one       two       three     four      five      '
              +'six       seven     eight     nine      ten       '
              +'eleven    twelve    thirteen  fourteen  fifteen   '
              +'sixteen   seventeen eighteen  nineteen  '
              +'twenty    thirty    forty     fifty     '
              +'sixty     seventy   eighty    ninety    '
  SET @s=RIGHT('000000000000000'+CAST(@num AS varchar(15)),15)
  SET @billion=CAST(SUBSTRING(@s,1,3) AS int)--将12位整数分成4段:十亿、百万、千、百十个
  SET @million=CAST(SUBSTRING(@s,4,3) AS int)
  SET @thousand=CAST(SUBSTRING(@s,7,3) AS int)
  SET @result=''
  SET @i=0
  WHILE @i<=3
  BEGIN
    SET @hundreds=CAST(SUBSTRING(@s,@i*3+1,1) AS int)--百位0-9
    SET @tenth=CAST(SUBSTRING(@s,@i*3+2,1) AS int)
    SET @one=(CASE @tenth WHEN 1 THEN 10 ELSE 0 END)+CAST(SUBSTRING(@s,@i*3+3,1) AS int)--个位0-19
    SET @tenth=(CASE WHEN @tenth<=1 THEN 0 ELSE @tenth END)--十位0、2-9
    IF (@i=1 and @billion>0 and (@million>0 or @thousand>0 or @hundreds>0)) or
       (@i=2 and (@billion>0 or @million>0) and (@thousand>0 or @hundreds>0)) or
       (@i=3 and (@billion>0 or @million>0 or @thousand>0) and (@hundreds>0))
      SET @result=@result+', '--百位不是0则每段之间加连接符,
    IF (@i=3 and (@billion>0 or @million>0 or @thousand>0) and (@hundreds=0 and (@tenth>0 or @one>0)))
      SET @result=@result+' and '--百位是0则加连接符AND
    IF @hundreds>0
      SET @result=@result+RTRIM(SUBSTRING(@numbers,@hundreds*10-9,10))+' hundred'
    IF @tenth>=2 and @tenth<=9
    BEGIN
      IF @hundreds>0
        SET @result=@result+' and '
      SET @result=@result+RTRIM(SUBSTRING(@numbers,@tenth*10+171,10))
    END
    IF @one>=1 and @one<=19
    BEGIN
      IF @tenth>0
        SET @result=@result+'-'
      ELSE
        IF @hundreds>0
          SET @result=@result+' and '
      SET @result=@result+RTRIM(SUBSTRING(@numbers,@one*10-9,10))
    END
    IF @i=0 and @billion>0
      SET @result=@result+' billion'
    IF @i=1 and @million>0
      SET @result=@result+' million'
    IF @i=2 and @thousand>0
      SET @result=@result+' thousand'
    SET @i=@i+1
  END
  IF SUBSTRING(@s,14,2)<>'00'
  BEGIN
    SET @result=@result+' AND '
    IF SUBSTRING(@s,14,1)='0'
      SET @result=@result+'zero'
    ELSE
      SET @result=@result+RTRIM(SUBSTRING(@numbers,CAST(SUBSTRING(@s,14,1) AS int)*10-9,10))
    IF SUBSTRING(@s,15,1)<>'0'
      SET @result=@result+' '+RTRIM(SUBSTRING(@numbers,CAST(SUBSTRING(@s,15,1) AS int)*10-9,10))
  END
  RETURN(@result)
END
------------------------------------------------------------------------------------------------
CREATE FUNCTION f_amt_to_chn (@num numeric(14,2))
RETURNS varchar(100) WITH ENCRYPTION
AS
BEGIN
DECLARE @n_data VARCHAR(20),@c_data VARCHAR(100),@n_str VARCHAR(10),@i int
SET @n_data=RIGHT(SPACE(14)+CAST(CAST(ABS(@num*100) AS bigint) AS varchar(20)),14)
SET @c_data=''
SET @i=1
 WHILE @i<=14
    BEGIN
    SET @n_str=SUBSTRING(@n_data,@i,1)
    IF @n_str<>' '
    BEGIN
    IF not ((SUBSTRING(@n_data,@i,2)='00') or ((@n_str='0') and ((@i=4) or (@i=8) or (@i=12) or (@i=14))))
        SET @c_data=@c_data+SUBSTRING('零壹贰叁肆伍陆柒捌玖',CAST(@n_str AS int)+1,1)
    IF not ((@n_str='0') and (@i<>4) and (@i<>8) and (@i<>12))
        SET @c_data=@c_data+SUBSTRING('仟佰拾亿仟佰拾万仟佰拾元角分',@i,1)
    IF SUBSTRING(@c_data,LEN(@c_data)-1,2)='亿万'
        SET @c_data=SUBSTRING(@c_data,1,LEN(@c_data)-1)
    END
    SET @i=@i+1

 END

 IF @num<0
 SET @c_data='负'+@c_data

 IF @num=0
 SET @c_data='零元'

 IF @n_str='0'
 SET @c_data=@c_data+'整'

RETURN(@c_data)

END


测试上面两个函数的效果
select
name as 姓名,
gz as 实发工资,
dbo.f_amt_to_chn(gz) as 中文金额,
dbo.f_amt_to_eng(gz) as 英文金额
运行结果:


from tb_hr_gz
8.2删除函数
语法:
drop function <函数名称>

代码:
drop function f_num_to_eng
------------------------------------------------------------------------------------------------
9.变量,赋值,控制语句(存储过程,触发器,函数应用)

9.1局部/全局变量定义
局部变量 (以@开头)
格式:declare @变量名 数据类型
代码:declare @x int

全局变量 (必须以@@开头)
格式:declare @@变量名 类型
代码:select @@id = '10010001'

9.2赋值语句set/select

set @id = '10010001'
select @id = '10010001'

9.3条件语句(if/case)
9.3.1 语句if
declare @x int @y int @z int
select @x = 1 @y = 2 @z=3
if @x > @y
print 'x > y' --打印字符串'x > y'
else if @y > @z
print 'y > z'
else print 'z > y'

9.3.2 语句CASE
--CASE
use pangu
update employee
set e_wage =
case
when job_level = ’1’ then e_wage*1.08
when job_level = ’2’ then e_wage*1.07
when job_level = ’3’ then e_wage*1.06
else e_wage*1.05
end

9.4循环语句(while)
--WHILE
declare @x int @y int @c int
select @x = 1 @y=1
while @x < 3
begin
print @x --打印变量x 的值
while @y < 3
begin
select @c = 100*@x + @y
print @c --打印变量c 的值
select @y = @y + 1
end
select @x = @x + 1
select @y = 1
end

9.5定时执行(waitfor)

--WAITFOR
--例 等待1 小时2 分零3 秒后才执行SELECT 语句
waitfor delay ’01:02:03’
select * from employee
--例 等到晚上11 点零8 分后才执行SELECT 语句
waitfor time ’23:08:00’
select * from employee

---------------------------------------------------------------------
10.标准SQL字符串函数

ASCII() --函数返回字符表达式最左端字符的ASCII 码值
CHAR() --函数用于将ASCII 码转换为字符--如果没有输入0 ~ 255 之间的ASCII 码值CHAR 函数会返回一个NULL
LOWER() --函数把字符串全部转换为小写
UPPER() --函数把字符串全部转换为大写
STR() --函数把数值型数据转换为字符型数据
LTRIM() --函数把字符串头部的空格去掉
RTRIM() --函数把字符串尾部的空格去掉
LEFT(),RIGHT(),SUBSTRING() --函数返回部分字符串
CHARINDEX(),PATINDEX() --函数返回字符串中某个指定的子串出现的开始位置
REPLICATE() --函数返回一个重复character_expression 指定次数的字符串
select replicate('abc', 3) replicate( 'abc', -2)运行结果如下abcabcabc NULL
REVERSE() --函数将指定的字符串的字符排列顺序颠倒
REPLACE() --函数返回被替换了指定子串的字符串
select replace('abc123g', '123', 'def')运行结果如下abcdefg
SPACE() --函数返回一个有指定长度的空白字符串
STUFF() --函数用另一子串替换字符串指定位置长度的子串

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值