sqlserver语句随笔

  1. 添加随机数据:insert into 表名(字段) select 字段2 from 表名2 order by newid(),例子: insert ker (kname) select Name from Sys_Site_News order by newid()
  2. 重置表数据而不删除表:truncate table 表名 ,例子:truncate table ker
  3. 随机更新语句:update kan set mid=0 where kid in (select TOP 39999 kid from kan ORDER BY newid())
  4. 添加语句:insert into 表名(字段) select 字段2 from 表名2,例子: insert into ker (kname) select Name from Sys_Site_News
  5. 替换数据:update 表名 set 列=replace(列,'要替换的数据','替换成的数据'),例子:update kers set KeyConn=replace(KeyConn,'-','/')
  6. 更新为第一个字符之前的数据:update ker set kname =m.qq from ker,(select ID,left(kname,charindex('-',kname)-1) as qq from ker) m where ker.ID= m.ID
  7. 更新为最后一个字符之前的数据:update a11 set aa =m.qq from a11,(select ID,reverse(substring(reverse(aa),charindex('_',reverse(aa))+1,500))as qq from a11) m where a11.ID = m.ID
  8. 更新为最后一个字符之后的数据:update a11 set aa =m.qq from a11,(select ID,reverse(substring(reverse(aa),1,charindex('-',reverse(aa))-1))as qq  from a11) m where a11.ID = m.ID
  9. 更新为第一个字符之后的数据:update a13 set aa =t.string from a13,(select ID,substring(aa,charindex('_',aa)+1,len(aa)-charindex('_',aa)) as string from a13) t where a13.ID = t.ID
  10. 小写字母全部改为大写字母:update 表名 set 字段名a= upper(字段名a) 例子:update kers set aa= upper(aa)
  11. 大写字母改为小写字母:update 表名 set 字段名a= Lower(字段a) 例子:update kers set aa= Lower(aa)
  12. 只大写首字母:update 表名 set 字段名= STUFF(字段名,1,1,upper(substring(字段名,1,1)))  例子:update kers set KeyConn= STUFF(KeyConn,1,1,upper(substring(KeyConn,1,1)))
  13. 去掉字符串中的前后空格:update 表名 set 字段名= ltrim(rtrim(字段名)) 例子:update kers set KeyTitle = ltrim(rtrim(KeyTitle))
  14. 去除输入字符串中的中文
    create function fun_del_chinese
    (@col nvarchar(max))
    returns nvarchar(max)
    AS
    begin
    declare @returnchar nvarchar(max),@len int
    select @returnchar='',@len=1

    while(@len<=len(@col))
    begin
    if(ASCII(substring(@col,@len,1))<122)
    set @returnchar=@returnchar+substring(@col,@len,1)
    set @len=@len+1
    end
    return @returnchar
    end
    go 

    调用:
    update 表名 set 字段名=dbo.fun_del_chinese(字段名) from 表名

  15. 去掉开头特殊字符:
    CREATE FUNCTION dbo.trimChar(@char nvarchar(max),@str nvarchar(max))
    RETURNS nvarchar(max)
    AS
    BEGIN
    RETURN(SELECT STUFF
    (REVERSE(
    STUFF(REVERSE(@str),1,
    PATINDEX('%[^'+@char+']%',REVERSE(@str))-1,'')
    )
    ,1,PATINDEX('%[^'+@char+']%',@str)-1,'')

    );
    END
    GO

    调用:
    update 表名 set 字段名=dbo.trimChar('特殊符号',字段名)

  16. 调取两个相同特殊字符中间的内容:
    Create function f_getStr
    (@str nvarchar(max),--字符串
    @split nvarchar(max),--分隔符
    @begin int,--第几次出现
    @end int--第几次出现
    ) returns varchar(1000)
    as
    begin
    declare @str1 nvarchar(max)
    declare @str2 nvarchar(max)
    declare @POSITION1 int
    declare @POSITION2 int
    declare @char nvarchar(max)
    declare @i int
    set @str1=@str
    set @str2=@str
    set @i=0
    while @i<@begin
    begin
    if charindex(@split,@str1)>0
    set @str1=right(@str1,len(@str1)-charindex(@split,@str1))
    set @i=@i+1
    end
    select @POSITION1=len(@str)-len(@str1)--@POSITION1位置1

    set @i=0
    while @i<@end
    begin
    if charindex(@split,@str2)>0
    set @str2=right(@str2,len(@str2)-charindex(@split,@str2))
    set @i=@i+1
    end
    select @POSITION2=len(@str)-len(@str2)--@POSITION2位置2

    if @POSITION1>@POSITION2
    set @char=substring(@str,@POSITION2+1,@POSITION1-@POSITION2-1)
    else
    set @char=substring(@str,@POSITION1+1,@POSITION2-@POSITION1-1)
    return @char
    end

    调用:
    select dbo.f_getStr(za,'/',2,3) as string from xa

posted @ 2020-05-23 17:11  天然白  阅读(321)  评论(0编辑  收藏  举报