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

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

--/* 
--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
复制代码

实例1:

---由于某些原因HouseName 字段存入了GUID,为了区分
SELECT HouseName FROM ZSGYTD_HouseInfo 
SELECT HouseName FROM ZSGYTD_HouseInfo WHERE UNICODE(HouseName) BETWEEN 19968 AND 40869

执行结果:

 

实例2:

复制代码
----将上述存入ZSGYTD_Estate 表ID的houseName进行左连接,获取到对应的Name
SELECT h.HouseName,
CASE WHEN UNICODE(h.HouseName) BETWEEN 19968 AND 40869 then h.HouseName 
     ELSE e.Name
     END housename2    
FROM ZSGYTD_HouseInfo  h
LEFT JOIN ZSGYTD_Estate e ON CONVERT(varchar(50),e.ID)=h.HouseName and e.IsDeleted=0 


select*from ZSGYTD_Estate
复制代码

转载于:https://www.cnblogs.com/handsome1013/p/11041624.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值