if object_id('fnExtractChinese') is not null drop function fnExtractChinese GO ----创建字符串提取函数 create function fnExtractChinese(@string varchar(100)) returns varchar(100) as begin declare @str varchar(100) set @str = '' while PATINDEX('%[吖-座]%',@String) > 0 begin set @str = @str + substring(@String,PATINDEX('%[吖-座]%',@String),1) set @String = stuff(@String,PATINDEX('%[吖-座]%',@String),1,'') end return @str end GO ----创建测试数据 declare @t table(id int,a varchar(100),b varchar(100)) insert @t select 1,'asd你好nfa中华fa32323,','' union all select 2,'asd成功的23sdf人哪2039askdjfal;kj;lk',''----更新 update @t set b = dbo.fnExtractChinese(a) from @t ----查看 select * from @t----清除测试环境 drop function fnExtractChinese/*结果 id a b ---------------------------------------------------------- 1 asd你好nfa中华fa32323, 你好中华 2 asd成功的23sdf人哪2039askdjfal;kj;lk 成功的人哪 */
思路: 参考以上方法,用len(@str)>0则有中文字符存在
至于英文字符,我这里没有安装SQL,不能帮你调试啦,楼主将"吖-座"改成"A-z"试试
SELECT *, CASE WHEN PATINDEX('%[阿-座]%', re) = 0 OR PATINDEX('%[A-Z]%', re) = 0 THEN N'不满足条件' ELSE N'满足条件' END FROM( SELECT re = 'Mike 啊 Chou' UNION ALL SELECT re = 'Mike Chou' UNION ALL SELECT re = '阿 阿' UNION ALL SELECT re = '满足条件?' UNION ALL SELECT re = '测试d' )A-- 结果: re ------------ ----- Mike 啊 Chou 满足条件 Mike Chou 不满足条件 阿 阿 不满足条件 满足条件? 不满足条件 测试d 满足条件(5 行受影响)
----------- ----------- ----------- -----------
65 176 65 21834(1 row(s) affected)
drop function fnExtractChinese
GO
----创建字符串提取函数
create function fnExtractChinese(@string varchar(100))
returns varchar(100)
as
begin
declare @str varchar(100)
set @str = ''
while PATINDEX('%[吖-座]%',@String) > 0
begin
set @str = @str + substring(@String,PATINDEX('%[吖-座]%',@String),1)
set @String = stuff(@String,PATINDEX('%[吖-座]%',@String),1,'')
end
return @str
end
GO
----创建测试数据
declare @t table(id int,a varchar(100),b varchar(100))
insert @t
select 1,'asd你好nfa中华fa32323,','' union all
select 2,'asd成功的23sdf人哪2039askdjfal;kj;lk',''----更新
update @t set b = dbo.fnExtractChinese(a) from @t
----查看
select * from @t----清除测试环境
drop function fnExtractChinese/*结果
id a b
----------------------------------------------------------
1 asd你好nfa中华fa32323, 你好中华
2 asd成功的23sdf人哪2039askdjfal;kj;lk 成功的人哪
*/
参考以上方法,用len(@str)>0则有中文字符存在
CASE
WHEN PATINDEX('%[阿-座]%', re) = 0 OR PATINDEX('%[A-Z]%', re) = 0
THEN N'不满足条件'
ELSE N'满足条件' END
FROM(
SELECT re = 'Mike 啊 Chou' UNION ALL
SELECT re = 'Mike Chou' UNION ALL
SELECT re = '阿 阿' UNION ALL
SELECT re = '满足条件?' UNION ALL
SELECT re = '测试d'
)A-- 结果:
re
------------ -----
Mike 啊 Chou 满足条件
Mike Chou 不满足条件
阿 阿 不满足条件
满足条件? 不满足条件
测试d 满足条件(5 行受影响)