如何区别字段中的英文和汉字
请大家帮我解决一下:
我的表中有一个字段,其中既有英文的记录又有汉字的纪录,能否写一条语只将英文或汉字的记录提取出来,谢谢各位!
------解决方案----------------------创建测试环境
create table #t(a varchar(20))
--插入测试数据
insert #t(a)
select 'sdfs ' union all
select '斯蒂芬 ' union all
select 'sdf斯蒂芬 '
--只有英文
select * from #t
where len(a) = datalength(a)
--只有汉字
select * from #t
where len(a)*2 = datalength(a)
--含有汉字
select * from #t
where len(a) <> datalength(a)
--删除测试环境
drop table #t
/*--测试结果
a
--------------------
sdfs
a
--------------------
斯蒂芬
(所影响的行数为 1 行)
a
--------------------
斯蒂芬
sdf斯蒂芬
(所影响的行数为 2 行)
*/
------解决方案--------------------SELECT * from table where PATINDEX( '%[a-z]% ',col)> 0--某字段中包含英文,想单独提出汉字用变量保存left(col,PATINDEX( '%[a-z]% '))
将剩余字符串提出再次查找英文就可以
stuff(col,1,PATINDEX( '%[a-z]% '), ' ')
------解决方案--------------------前提是数据类型是varchar 而不是nvarchar
------解决方案--------------------select * from table where col like '%[a-z]% '
中文的not like
试试看
------解决方案--------------------楼上好像要是字母为全角的就有问题!