Sql Sever 字符串截取汉字
2014-12-15 00:00
645 查看
最近需要在SQL的字符串中截取汉字,利用unicode函数判断字符的unicode编码,根据编码范围过滤掉非汉字字符。
写成了一个function
/*@str 需要获取汉字的字符串*/
create function CharRep(@str nvarchar(200))
returns nvarchar(200)
as
begin
declare @i int, @char nvarchar(1), @zh nvarchar(200)
set @i = 1
set @zh = ''
while @i <= len(@str)
begin
set @char = substring(@str, @i, 1)
if unicode(@char) between 19968 And 40869
set @zh = @zh + @char
set @i = @i + 1
end
return @zh
end
执行 select dbo.CharRep('侬好a/bc 侬好')
结果 a/bc
附:
unicode编码范围:
汉字:[0x4e00,0x9fa5](或十进制[19968,40869])
数字:[0x30,0x39](或十进制[48, 57])搜索
小写字母:[0x61,0x7a](或十进制[97, 122])
大写字母:[0x41,0x5a](或十进制[65, 90])
写成了一个function
/*@str 需要获取汉字的字符串*/
create function CharRep(@str nvarchar(200))
returns nvarchar(200)
as
begin
declare @i int, @char nvarchar(1), @zh nvarchar(200)
set @i = 1
set @zh = ''
while @i <= len(@str)
begin
set @char = substring(@str, @i, 1)
if unicode(@char) between 19968 And 40869
set @zh = @zh + @char
set @i = @i + 1
end
return @zh
end
执行 select dbo.CharRep('侬好a/bc 侬好')
结果 a/bc
附:
unicode编码范围:
汉字:[0x4e00,0x9fa5](或十进制[19968,40869])
数字:[0x30,0x39](或十进制[48, 57])搜索
小写字母:[0x61,0x7a](或十进制[97, 122])
大写字母:[0x41,0x5a](或十进制[65, 90])
相关文章推荐
- Sql Sever 字符串截取汉字
- 截取固定长度字符串显示在页面,多余部分显示为省略号(区分汉字和字符)
- Delphi 处理在字符串截取中避免出现半个汉字
- java按字节截取带有汉字的字符串的解法
- 截取字符串(判断汉字)
- 截取字符串,汉字占两个字节,字母占一个字节
- 截取固定长度字符串显示在页面,多余部分显示为省略号(区分汉字和字符)
- 截取字符串(编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个,如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该输...)
- 【华为oj】截取字符串,汉字不能截一半
- 截取字符串,汉字占两个字节,字母占一个字节
- VB 汉字字符串的截取LEN、LEFT、RIGHT
- 面试题之——对包含汉字的字符串截取指定字节数
- 截取指定长度的字符串(汉字不出现半个)
- php 截取汉字字符串
- 截取字符串。输入字符串和按照多大字节进行截取,输出结果:按照字节截取的字符串。注意:汉字占两个字节,所以输入的汉字不能截取为半个汉字!!!例子:输入“我ABC爱北京”,字节输入6,结果为:“我ABC”
- 关于java按字节截取带有汉字的字符串的解法
- 截取带汉字的字符串
- 一道java笔试题,如何截取带有汉字的字符串
- C# 按长度截取字符串(区别汉字,英文,数字)
- 包含汉字的字符串截取,及相关