sqlserver语句随笔
Posted 编程刘小白
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sqlserver语句随笔相关的知识,希望对你有一定的参考价值。
- 替换数据:update 表名 set 列=replace(列,‘要替换的数据‘,‘替换成的数据‘),例子:update kers set KeyConn=replace(KeyConn,‘-‘,‘/‘)
- 更新为第一个字符之前的数据: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
- 更新为最后一个字符之前的数据: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
- 更新为最后一个字符之后的数据: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
- 更新为第一个字符之后的数据: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
- 小写字母全部改为大写字母:update 表名 set 字段名a= upper(字段名a) 例子:update kers set aa= upper(aa)
- 大写字母改为小写字母:update 表名 set 字段名a= Lower(字段a) 例子:update kers set aa= Lower(aa)
- 只大写首字母:update 表名 set 字段名= STUFF(字段名,1,1,UPPER(SUBSTRING(字段名,1,1))) 例子:update kers set KeyConn= STUFF(KeyConn,1,1,UPPER(SUBSTRING(KeyConn,1,1)))
- 去掉字符串中的前后空格:update 表名 set 字段名= ltrim(rtrim(字段名)) 例子:update kers set KeyTitle = ltrim(rtrim(KeyTitle))
-
去除输入字符串中的中文
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 表名 -
去掉开头特殊字符:
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(‘特殊符号‘,字段名) -
调取两个相同特殊字符中间的内容:
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语句随笔的主要内容,如果未能解决你的问题,请参考以下文章