sqlserver语句随笔

  1. 替换数据:update 表名 set 列=replace(列,'要替换的数据','替换成的数据'),例子:update kers set KeyConn=replace(KeyConn,'-','/')
  2. 更新为第一个字符之前的数据: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
  3. 更新为最后一个字符之前的数据: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
  4. 更新为最后一个字符之后的数据:UPDATE a11 SET aa =m.qq FROM a11,(select REVERSE(SUBSTRING(REVERSE(@str1),1,CHARINDEX('.',REVERSE(@str1))-1))as qq  from a11)m WHERE a11.ID = m.ID
  5. 更新为第一个字符之后的数据: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
  6. 小写字母全部改为大写字母:update 表名 set 字段名a= upper(字段名a) 例子:update kers set aa= upper(aa)
  7. 大写字母改为小写字母:update 表名 set 字段名a= Lower(字段a) 例子:update kers set aa= Lower(aa)
  8. 只大写首字母:update 表名 set 字段名= STUFF(字段名,1,1,UPPER(SUBSTRING(字段名,1,1)))  例子:update kers set KeyConn= STUFF(KeyConn,1,1,UPPER(SUBSTRING(KeyConn,1,1)))
  9. 去掉字符串中的前后空格:update 表名 set 字段名= ltrim(rtrim(字段名)) 例子:update kers set KeyTitle = ltrim(rtrim(KeyTitle))
  10. 去除输入字符串中的中文
    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 表名

  11. 去掉开头特殊字符:
    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('特殊符号',字段名)

  12. 调取两个相同特殊字符中间的内容:
    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

你可能感兴趣的:(sqlserver语句随笔)