sqlserver如何判断字段中是否含有汉字?
发布网友
发布时间:2022-04-10 10:24
我来回答
共4个回答
热心网友
时间:2022-04-10 11:53
--/*
--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
热心网友
时间:2022-04-10 13:11
select case when asciistr(a) like '%\%' then 0 else 1 end from table
其实关键的就是asciistr(),值包含\就是汉字,不包含就不是汉字
热心网友
时间:2022-04-10 14:46
select case when LEN(字段)<>DATALENGTH(字段) then 0 else 字段 end
FROM 表追问这样好像不行吧?对了,表中的‘,’逗号是中文的逗号,比如‘1,2,3’的字节长跟字符长也不一样,但是并不含汉字
追答中文输入法的符号就是属于中文范畴,有什么问题吗??
热心网友
时间:2022-04-10 16:37
select case when patindex('%[吖-座]%',a)>0 then 0 else a end from table