惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

B
Blog
The Cloudflare Blog
J
Java Code Geeks
Apple Machine Learning Research
Apple Machine Learning Research
T
Tailwind CSS Blog
L
LangChain Blog
Recent Announcements
Recent Announcements
Hugging Face - Blog
Hugging Face - Blog
Microsoft Security Blog
Microsoft Security Blog
F
Fortinet All Blogs
Microsoft Azure Blog
Microsoft Azure Blog
V
V2EX
I
InfoQ
博客园 - 司徒正美
T
The Blog of Author Tim Ferriss
G
Google Developers Blog
云风的 BLOG
云风的 BLOG
aimingoo的专栏
aimingoo的专栏
小众软件
小众软件
H
Help Net Security
博客园 - 三生石上(FineUI控件)
S
SegmentFault 最新的问题
B
Blog RSS Feed
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知

博客园 - 冯小磊

女人的面相 只有mdf文件的恢复技术 冒泡,选择,插入,希尔 vb.net c#.net 代码相互转换 [转]C# 参考之转换关键字:operator、explicit与implicit 【转载】SQL查询中区分大小写的方法 Dev里面DataGid控件使用方法之一 对于sql数据库中重复的记录... (word导出问题)解决:服务器出现意外情况。 (异常来自 HRESULT:0x80010105 (RPC_E_SERVERFAULT))的解决方法 白骨精写给孙悟空的绝世情书 DBCC CHECKDB (检查指定数据库中的所有对象的分配和结构完整性) c# 限制窗体 sqlserver附加数据库错误823的解决方案 改变DevExpress控件的字体 按某一字段分组取最大(小)值所在行的数据 mssql1069错误(由于登录失败而无法启动服务)解决方法 C# 判断中文字符(字符串) 函数datediff 用SqlCommandBuilder 实现批量更新
MSSQL中取字符中的汉字或双字节字符
冯小磊 · 2008-04-07 · via 博客园 - 冯小磊

1.SQL中截取中文字符("吖-咗"这个区间几乎能包括所有的汉字)

--A.
create function get_china(@s varchar(50))
returns varchar(50)
as
begin
declare @i int
set @i=1
while patindex('%[^吖-咗]%',@s> 0 and @i<=len(@s)
begin
if substring(@s,@i,1not like '%[吖-咗]%'
set @s=stuff(@s,@i,1,'')
else
set @i=@i+1
end
return @s
end

select dbo.get_china('但是111中国aaa人test我***是啊kao多多うェ')
drop function dbo.get_china


--B.
create function getnewstr
(
@oldstr varchar(100))
returns varchar(100)
as
begin
declare @i int
set @i = 1
while @i <= len(@oldstr)
if substring(@oldstr@i1like('[^吖-座]')
set @oldstr = replace(@oldstrsubstring(@oldstr@i1), '')
else
set @i = @i +1
return @oldstr
end
go

select result = dbo.getnewstr('但是111中国aaa人test我***是啊kao多多うェ')
drop function dbo.getnewstr

2.字符中无全角,但是还包含双字节字符,比如汉字,日文,汉文

--A.
declare @s varchar(100),@i int,@s2 varchar(100)
set @s='但是111中国aaa人test我***是啊kao多多うェ'
set @i=1
while  @i<=len(@s)
begin
    
if ascII(substring(@s,@i,1)) between 133  and 223
       
set @i=@i+1 
    
else
    
begin
       
set @s = stuff(@s,@i,1,'')
       
set @i = 1
    
end
end
select @s

--B.
DECLARE @s VARCHAR(100),@s1 VARCHAR(100)
SELECT @s='但是111中国aaa人test我***是啊kao多多うェ',@s1=''
WHILE LEN(@s)>0
    
SELECT @s1=CASE WHEN DATALENGTH(RIGHT(@s,1))=2 THEN RIGHT(@s,1ELSE '' END + @s1,@s=LEFT(@s,LEN(@s)-1)
SELECT @s1

--来自CSDN