sqlServer去除字段中的中文

Posted littleFatty

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sqlServer去除字段中的中文相关的知识,希望对你有一定的参考价值。

很多时候数据库表中某些字段是由中文和字母或数字组成,但有时我们又需要将字段中的中文去掉。想要实现这种需求的方法有很多,下面就是其中一种解决方法。

首先我们先建立测试数据

create table test(
id int primary key identity(1,1),
name varchar(20) not null
)

insert into test(name) values(\'测试2\')
insert into test(name) values(\'测试a\')
insert into test(name) values(\'测试\')
insert into test(name) values(\'abc\')
insert into test(name) values(\'123\')
insert into test(name) values(\'abc123\')

select * from test

 

结果:

创建函数:

--去除输入字符串中的中文
create function fun_del_chinese
(@col varchar(1000))
returns varchar(1000)
AS
begin
    declare @returnchar varchar(1000),@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 test set name=t2.name
from test t1,
(select id,dbo.fun_del_chinese(name) name from test
where len(name)*2!=datalength(name)--排除全部由中文组成字段
) t2
where t1.id=t2.id

 

执行结果:

以上是关于sqlServer去除字段中的中文的主要内容,如果未能解决你的问题,请参考以下文章

sqlserver中去掉空格的函数是社么

缺少 SQL SERVER 2014 代码片段

MongoDB - 去除字段中的非数字字符

MongoDB - 去除字段中的非数字字符

sql server 2008中列名外的中括号去除不掉

如何去除SqlServer的自增字段 不用identity_insert和创建新列 还有别的方法么? 这个列里有数据,不能动