sqlserver如何判断字段中是否含有汉字?

有这样一个table,列名为a:a1,2,3a,d1你好在,2,aA,1,a有以上6行数据,如果a中含有汉字,则输出0,否则返回a的值,怎么做?用sqlserver... 有这样一个table,列名为a:
a
1,2,3
a,d
1
你好
在,2,a
A,1,a
有以上6行数据,如果a中含有汉字,则输出0,否则返回a的值,怎么做?用sqlserver
展开
 我来答
匿名用户
推荐于2018-06-05
展开全部
--/*

--unicode编码范围:

--汉字:[0x4e00,0x9fa5](或十进制[19968,40869])

--数字:[0x30,0x39](或十进制[48, 57])

--小写字母:[0x61,0x7a](或十进制[97, 122])

--大写字母:[0x41,0x5a](或十进制[65, 90])

--根据编码范围来判断

--*/
--创建

create proc p_A_VIC

as

declare @count int

declare @i int

declare @text nvarchar(50)

set @i = 0

set @count = (select COUNT (*) from table  )

while(@i < @count )

begin

    set @i +=1
    --sid代表有一定循环规律的,若是无序的可以添加一个序列(Row_Number() OVER ---)。
    --select * from (SELECT *, Row_Number() OVER ( ORDER BY [sid] ) num FROM s--table ) as s where num = 3
    set @text = (select  a from table  where [sid] = @i)

    if unicode(@text) between 19968 And 40869 or unicode(@text) between 97 And 122 or unicode('a') between 65 And 90

    begin

      print 0

    end

    else

       print @text

end

--执行

exec  p_A_VIC
chen_hongyang
推荐于2018-03-01 · TA获得超过5447个赞
知道大有可为答主
回答量:2790
采纳率:91%
帮助的人:917万
展开全部
select case when asciistr(a) like '%\%' then 0 else 1 end from table
其实关键的就是asciistr(),值包含\就是汉字,不包含就不是汉字
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tj_angela
2014-08-07 · TA获得超过7530个赞
知道大有可为答主
回答量:6797
采纳率:75%
帮助的人:2677万
展开全部
select case when LEN(字段)<>DATALENGTH(字段) then 0 else 字段 end
FROM 表
追问
这样好像不行吧?对了,表中的‘,’逗号是中文的逗号,比如‘1,2,3’的字节长跟字符长也不一样,但是并不含汉字
追答
中文输入法的符号就是属于中文范畴,有什么问题吗??
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cowboy679
2018-06-05
知道答主
回答量:1
采纳率:0%
帮助的人:889
展开全部
select case when patindex('%[吖-座]%',a)>0 then 0 else a end from table
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式