日期:2014-05-19  浏览次数:20549 次

如何区别字段中的英文和汉字
请大家帮我解决一下:
我的表中有一个字段,其中既有英文的记录又有汉字的纪录,能否写一条语只将英文或汉字的记录提取出来,谢谢各位!

------解决方案--------------------
--创建测试环境
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
试试看
------解决方案--------------------
楼上好像要是字母为全角的就有问题!