怎么识别字段中包含有汉字呢?

net_steven 2003-05-27 07:35:09
也许以前有这样的帖子,能帮俺找出来也行,重要的是要有答案。:)
...全文
51 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
net_steven 2003-05-28
  • 打赏
  • 举报
回复
不错,可以解决问题了,又长知识了!谢谢各位老大!
没带帽子,否则脱帽致敬了!:)
j9988 2003-05-28
  • 打赏
  • 举报
回复
小黑说得有理.加上convert
happydreamer 2003-05-27
  • 打赏
  • 举报
回复
J老师
你的len(field)<>datalength(field)这个方法

如果表的字段定义varchar是可以的
当如果是nvarchar 得到的就是全部数据

比如
declare @a table (a nvarchar(100))
insert @a values('a')
insert @a values('b')
insert @a values('大')
select * from table where len(field)<>datalength(field)
j9988 2003-05-27
  • 打赏
  • 举报
回复
我想如果判一个字符串是否是否有汉字,实际应用中应包含全角字符。
那最简单了:
if len('字符串')=datalength('字符串')
print '不含'
else
print '含'


select * from table where len(field)<>datalength(field)


如果是纯汉字,类似大力的方法写个函数:
create function ifexistscnword(@str varchar(1000))
returns int
as
begin
declare @i int
set @i=0
while @str <>'' and @i<>1
begin
set @i=case when unicode(left(@str,1)) between 19668 and 19668+20902 then 1 else 0 end
set @str=right(@str,len(@str)-1)
end
return @i
end
----------------
select * from table where dbo.ifexistscnword(field)=1
happydreamer 2003-05-27
  • 打赏
  • 举报
回复

select top 20902 code=identity(int,19968,1) into #t from
(select top 100 a=1 from syscolumns) as a,
(select top 100 a=1 from syscolumns) as b ,
(select top 10 a=1 from syscolumns) as c

select nchar(code) chinese,code into #tt
from #t


declare @a table (a nvarchar(100))
insert @a values('a')
insert @a values('b')
insert @a values('大')

select * from @a, #tt
where charindex(a,chinese)>0


or


create table #t ( chinese varchar(10))

declare @a int
set @a=19968

while @a<=40870
begin

insert #t select nchar(@a)
set @a=@a+1
end
Happiness 2003-05-27
  • 打赏
  • 举报
回复
呵呵,好玩
pengdali 2003-05-27
  • 打赏
  • 举报
回复
create function 是汉字吗(@a nvarchar(4000))
returns bit
begin
declare @b bit
while @a<>'' and @b is null
begin
select @b=1 where unicode(left(@a,1)) between 19968 and 40870
set @a=right(@a,len(@a)-1)
end
return isnull(@b,0)
end
go

declare @a table (a nvarchar(100))
insert @a values('a')
insert @a values('b')
insert @a values('大')

select dbo.是汉字吗(a) from @a

go


drop function dbo.是汉字吗

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧