
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 展开
a
1,2,3
a,d
1
你好
在,2,a
A,1,a
有以上6行数据,如果a中含有汉字,则输出0,否则返回a的值,怎么做?用sqlserver 展开
4个回答
推荐于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
展开全部
select case when asciistr(a) like '%\%' then 0 else 1 end from table
其实关键的就是asciistr(),值包含\就是汉字,不包含就不是汉字
其实关键的就是asciistr(),值包含\就是汉字,不包含就不是汉字
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select case when LEN(字段)<>DATALENGTH(字段) then 0 else 字段 end
FROM 表
FROM 表
追问
这样好像不行吧?对了,表中的‘,’逗号是中文的逗号,比如‘1,2,3’的字节长跟字符长也不一样,但是并不含汉字
追答
中文输入法的符号就是属于中文范畴,有什么问题吗??
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select case when patindex('%[吖-座]%',a)>0 then 0 else a end from table
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询